Files
jason.woltje 1f2a726d19 feat(plugins): the five shipped starter packs (#1873 SP2)
coding, creative-writing, marketing, montage and business-management,
each a packVersion 1 document pinning whole V2 templates at today's
templateHash. expected-lines.json beside each pack records the flagged
and credential lines every proposed hire carries against
roles/chief-of-staff.json, as the broker computes them.

starter-pack-shipped.test.mjs checks each pack loads through SP1 with
origin shipped, matches section 7, and that its lines equal
expected-lines.json; a template edit refuses the pack until re-pinned.
The SP1 test no longer expects an empty shipped listing.
2026-11-12 16:06:08 -06:00

52 lines
2.6 KiB
JavaScript

// Shipped starter pack "marketing" (#1873 SP2). Design: starter-packs-design section 7.
// Every definition is a whole V2 template pinned by its templateHash, so a template edit refuses
// this pack (starter-pack-template-changed) until it is re-pinned. expected-lines.json beside this
// file holds the lines each proposed hire carries against the chief; the shipped-pack test checks it.
export const interfaceVersion = 1;
export function starterPack() {
return {
packVersion: 1,
id: "marketing",
version: "1.0.0",
label: "Marketing",
description: "Plan and write campaigns: research finds the angle, ideas drafts, claims are checked and edited, and you approve publishing.",
scope: "org",
definitions: {
"chief-marketing-officer": { template: "chief-marketing-officer", sha256: "fb3fe65980a19d9c596451a3b722d0ba9ac819bdec8f65ee91b434e938c2edca" },
research: { template: "research", sha256: "6c181f0c0fef4730d9edd8dee3b73ee14cf71cb730d42e32b8fb2bb06b20cbe4" },
ideas: { template: "ideas", sha256: "bdaf8eb8a97606a52ba653dfae04044c18c3ceca3f90e43073b3136db1e5da95" },
proofreader: { template: "proofreader", sha256: "6df42775fc2185e8ecf0223acaf7fefa7413f7f45bfaded0b0d5b2720d61cca6" },
"fact-checker": { template: "fact-checker", sha256: "c6e26f27b0b2eb18edf56bd69b9388504652762f7f9bf8e1da02ed4151a4e0ff" },
},
hires: [
{ name: "cmo", definition: "chief-marketing-officer", reason: "leads the campaigns" },
{ name: "research-1", definition: "research", reason: "finds the angle for each campaign" },
{ name: "proofreader-1", definition: "proofreader", reason: "edits each draft" },
],
board: {
columns: [
{ state: "todo", label: "Ideas" },
{ state: "in-progress", label: "In progress" },
{ state: "in-review", label: "Approval" },
{ state: "blocked", label: "Blocked" },
{ state: "done", label: "Live" },
],
layout: "kanban",
},
workflows: {
campaign: {
description: "One campaign from angle to published.",
steps: [
{ id: "angle", title: "Find the angle", roles: ["research"], state: "todo" },
{ id: "draft", title: "Draft the campaign", roles: ["ideas"], state: "in-progress" },
{ id: "check", title: "Check the claims", roles: ["fact-checker"], state: "in-review" },
{ id: "edit", title: "Edit the copy", roles: ["proofreader"], state: "in-review" },
{ id: "publish", title: "Approve publishing", roles: ["human"], state: "done" },
],
},
},
skills: ["ms-unslop"],
};
}