@starlein/paperclip-plugin-company-wizard 0.2.4 → 0.3.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +59 -3
  2. package/dist/manifest.js +4 -5
  3. package/dist/manifest.js.map +2 -2
  4. package/dist/ui/index.css +563 -578
  5. package/dist/ui/index.css.map +2 -2
  6. package/dist/ui/index.js +1151 -559
  7. package/dist/ui/index.js.map +4 -4
  8. package/dist/worker.js +702 -253
  9. package/dist/worker.js.map +4 -4
  10. package/package.json +12 -7
  11. package/templates/ai-wizard/config-format.md +12 -4
  12. package/templates/ai-wizard/interview-system.md +3 -2
  13. package/templates/ai-wizard/messages.json +1 -1
  14. package/templates/ai-wizard/single-shot-system.md +4 -0
  15. package/templates/bootstrap-instructions.md +12 -2
  16. package/templates/modules/auto-assign/agents/ceo/heartbeat-section.md +1 -1
  17. package/templates/modules/auto-assign/agents/ceo/skills/auto-assign.fallback.md +1 -1
  18. package/templates/modules/auto-assign/agents/product-owner/heartbeat-section.md +1 -1
  19. package/templates/modules/auto-assign/module.meta.json +1 -1
  20. package/templates/modules/auto-assign/skills/auto-assign.md +1 -1
  21. package/templates/modules/backlog/module.meta.json +4 -3
  22. package/templates/modules/build-api/module.meta.json +1 -0
  23. package/templates/modules/ci-cd/module.meta.json +2 -1
  24. package/templates/modules/game-design/module.meta.json +18 -0
  25. package/templates/modules/game-design/skills/audio-design.fallback.md +16 -0
  26. package/templates/modules/game-design/skills/audio-design.md +28 -0
  27. package/templates/modules/game-design/skills/level-design.fallback.md +17 -0
  28. package/templates/modules/game-design/skills/level-design.md +29 -0
  29. package/templates/modules/github-repo/README.md +1 -0
  30. package/templates/modules/github-repo/module.meta.json +5 -2
  31. package/templates/modules/pr-review/README.md +5 -5
  32. package/templates/modules/pr-review/agents/code-reviewer/skills/code-review.md +7 -6
  33. package/templates/modules/pr-review/agents/devops/skills/infra-review.md +6 -6
  34. package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +11 -6
  35. package/templates/modules/pr-review/agents/product-owner/skills/product-review.md +7 -6
  36. package/templates/modules/pr-review/agents/qa/skills/qa-review.md +6 -6
  37. package/templates/modules/pr-review/agents/ui-designer/skills/design-review.md +6 -6
  38. package/templates/modules/pr-review/agents/ux-researcher/skills/ux-review.md +6 -6
  39. package/templates/modules/pr-review/docs/pr-conventions.md +16 -15
  40. package/templates/modules/pr-review/module.meta.json +8 -3
  41. package/templates/modules/stall-detection/module.meta.json +1 -1
  42. package/templates/modules/website-relaunch/module.meta.json +2 -1
  43. package/templates/presets/build-game/preset.meta.json +2 -1
  44. package/templates/presets/content/preset.meta.json +3 -1
  45. package/templates/presets/full/preset.meta.json +1 -0
  46. package/templates/presets/gtm/preset.meta.json +3 -1
  47. package/templates/presets/launch-pack/preset.meta.json +1 -0
  48. package/templates/presets/quality/preset.meta.json +2 -1
  49. package/templates/presets/repo-maintenance/preset.meta.json +2 -1
  50. package/templates/presets/secure/preset.meta.json +1 -0
  51. package/templates/roles/security-engineer/role.meta.json +1 -1
  52. package/templates/roles/cfo/AGENTS.md +0 -31
  53. package/templates/roles/cfo/HEARTBEAT.md +0 -37
  54. package/templates/roles/cfo/SOUL.md +0 -17
  55. package/templates/roles/cfo/TOOLS.md +0 -3
  56. package/templates/roles/cfo/role.meta.json +0 -17
package/package.json CHANGED
@@ -1,11 +1,9 @@
1
1
  {
2
2
  "name": "@starlein/paperclip-plugin-company-wizard",
3
- "version": "0.2.4",
3
+ "version": "0.3.18",
4
4
  "type": "module",
5
5
  "description": "AI-powered wizard to bootstrap paperclip agent companies from composable templates (for latest paperclip version)",
6
- "publishConfig": {
7
- "registry": "https://registry.npmjs.org"
8
- },
6
+ "repository": "https://github.com/starlein/paperclip-plugin-company-wizard",
9
7
  "scripts": {
10
8
  "build": "node ./esbuild.config.mjs",
11
9
  "build:rollup": "rollup -c",
@@ -14,10 +12,15 @@
14
12
  "test": "vitest run --config ./vitest.config.ts",
15
13
  "test:logic": "node --test src/logic/*.test.js src/api/*.test.js",
16
14
  "typecheck": "tsc --noEmit",
15
+ "build:prod": "NODE_ENV=production node ./esbuild.config.mjs",
17
16
  "publish:npm": "npm publish --access public",
18
- "prepublishOnly": "pnpm build",
17
+ "prepublishOnly": "pnpm build:prod",
19
18
  "prepare": "husky"
20
19
  },
20
+ "publishConfig": {
21
+ "access": "public",
22
+ "registry": "https://registry.npmjs.org/"
23
+ },
21
24
  "lint-staged": {
22
25
  "src/**/*.{ts,tsx,js,jsx}": [
23
26
  "prettier --write"
@@ -46,8 +49,8 @@
46
49
  "tailwind-merge": "^3.4.1"
47
50
  },
48
51
  "devDependencies": {
49
- "@paperclipai/plugin-sdk": "file:../paperclip/packages/plugins/sdk",
50
- "@paperclipai/shared": "file:../paperclip/packages/shared",
52
+ "@paperclipai/plugin-sdk": "^2026.529.0",
53
+ "@paperclipai/shared": "^2026.529.0",
51
54
  "@rollup/plugin-node-resolve": "^16.0.1",
52
55
  "@rollup/plugin-typescript": "^12.1.2",
53
56
  "@tailwindcss/postcss": "^4.0.7",
@@ -67,6 +70,8 @@
67
70
  "vitest": "^3.0.5"
68
71
  },
69
72
  "peerDependencies": {
73
+ "@paperclipai/plugin-sdk": ">=2026.529.0",
74
+ "@paperclipai/shared": ">=2026.529.0",
70
75
  "react": ">=18",
71
76
  "react-dom": ">=18"
72
77
  }
@@ -2,10 +2,13 @@ Respond with ONLY a JSON object (no markdown fences):
2
2
  {
3
3
  "name": "CompanyName",
4
4
  "companyDescription": "Comprehensive 2-4 paragraph description of what this company does, what it is building, who it is for, key technical decisions, priorities, constraints, and any special context. This is the company's permanent record — be thorough and specific.",
5
- "goal": "Goal title — what the team should accomplish first",
6
- "goalDescription": "Detailed paragraph: scope, success criteria, key constraints and context.",
7
- "project": "Project name",
8
- "projectDescription": "Concrete project description — what is being built and key technical details.",
5
+ "goals": [
6
+ { "title": "Top-level company goal", "description": "Detailed paragraph: scope, success criteria, key constraints and context." },
7
+ { "title": "Additional business/product/technical goal if needed", "description": "Concrete success criteria. Do not omit user-specific goals just because a preset/module also has template goals." }
8
+ ],
9
+ "projects": [
10
+ { "name": "Project name", "description": "Concrete project description — what is being built and key technical details.", "goals": ["Goal titles linked to this project"], "workspace": { "sourceType": "local_path", "defaultRef": "main", "setupCommand": "git init -b main", "isPrimary": true }, "executionWorkspacePolicy": { "defaultMode": "isolated_workspace", "workspaceStrategy": { "type": "git_worktree", "baseRef": "main" } } }
11
+ ],
9
12
  "preset": "preset-name",
10
13
  "modules": ["all-modules-to-activate-including-preset-ones"],
11
14
  "roles": ["all-non-base-roles-needed-including-preset-ones-engineer-is-not-base"],
@@ -14,6 +17,11 @@ Respond with ONLY a JSON object (no markdown fences):
14
17
 
15
18
  Rules:
16
19
  - modules should list ALL modules to activate (including preset ones).
20
+ - goals should list the user's concrete objectives. Preset/module template goals are added later by the wizard; do not replace the user's goal with a generic preset goal such as "Build a REST API" unless that is truly the whole objective.
21
+ - projects should link to the relevant goal titles in `goals`. Include enough project detail for agents to start work. The primary project MUST say whether Paperclip should create a fresh local Git repository or use an external repo:
22
+ - Fresh/new repo: use `workspace.sourceType: "local_path"`, `workspace.defaultRef: "main"`, `workspace.setupCommand: "git init -b main"`, and `workspace.isPrimary: true`.
23
+ - Existing external repo (GitHub/GitLab/etc.): use `workspace.sourceType: "git_repo"`, include `repoUrl`, `repoRef`/`defaultRef` when known (default `origin/main`), and prefer isolated git worktrees via `executionWorkspacePolicy`.
24
+ - Do not put credentials or tokens in repository URLs or project text.
17
25
  - roles should list ALL non-base roles the company needs (including preset ones). Engineer is NOT a base role — include it if the project involves code.
18
26
  - Be pragmatic — don't over-engineer. Match the config to the actual needs described.
19
27
  - If the user mentions speed/MVP/prototype, lean toward fast or rad.
@@ -39,7 +39,7 @@ Across your 3 questions, try to cover as many of these as the user's initial des
39
39
  3. **Quality vs speed** — Ship fast, iterate? Or production-grade, high quality from the start?
40
40
  4. **Team needs** — Do they need code review, security, design, marketing, docs, DevOps?
41
41
  5. **Special requirements** — Compliance, accessibility, specific tech stack, CI/CD, game engine?
42
- 6. **Repository** — Is there an existing repo? What language/framework?
42
+ 6. **Repository** — Should Paperclip create a new Git repository/workspace, or should the agents use an existing external repo such as GitHub/GitLab? If external, ask for URL and branch/ref; never ask for tokens.
43
43
 
44
44
  Don't ask about things already clear from the initial description. Skip to what's missing.
45
45
 
@@ -50,7 +50,7 @@ The user's interview answers are the primary source of context for the company.
50
50
  - **`companyDescription`**: Write a comprehensive 2-4 paragraph description that captures EVERYTHING learned during the interview — what the company does, what it's building, who it's for, key technical decisions, constraints, priorities, and any special context. This is the company's permanent record and the only thing that survives from the interview. Be thorough. Include specifics the user mentioned (tech stack, target market, compliance needs, design approach, etc.). Do NOT summarize into a single vague sentence.
51
51
  - **`goal`**: A clear, actionable goal title (what the team should accomplish first).
52
52
  - **`goalDescription`**: A detailed paragraph explaining the goal — scope, success criteria, constraints. Reference specifics from the interview.
53
- - **`project`** and **`projectDescription`**: Name the main project and describe it concretely.
53
+ - **`project`** and **`projectDescription`**: Name the main project and describe it concretely. The project must explicitly state repository setup. If the user chose an external repo, use `workspace.sourceType: "git_repo"` with `repoUrl`, `repoRef`/`defaultRef`, and isolated git worktrees. If no external repo was provided, use a fresh local Git repository with `workspace.sourceType: "local_path"`, `workspace.defaultRef: "main"`, `workspace.setupCommand: "git init -b main"`, and `workspace.isPrimary: true`.
54
54
 
55
55
  RECOMMENDATION (plain text, before the JSON):
56
56
  - One paragraph explaining your reasoning: why this preset, why these modules, why these roles.
@@ -64,4 +64,5 @@ Then output the JSON:
64
64
  - `modules` should list ALL modules to activate (including preset ones).
65
65
  - `roles` should list ALL non-base roles the company needs. This includes roles that come with the preset. The system does not auto-add preset roles — you must list them explicitly.
66
66
  - If the project involves building software, `engineer` MUST be in `roles`.
67
+ - The primary project MUST state whether it uses a fresh local Git repository or an external Git repository. Do not put credentials or tokens in repository fields.
67
68
  - Be pragmatic — don't over-engineer. Match the config to actual needs.
@@ -2,5 +2,5 @@
2
2
  "interviewStart": "Here's what I want to build:\n\n{{DESCRIPTION}}\n\nStart the interview. Ask your first question.",
3
3
  "summaryRequest": "Now summarize what you understood about my company and needs. Keep it brief.",
4
4
  "iterateRequest": "Not quite right. Let me clarify. Ask 3 more follow-up questions to get a better understanding.",
5
- "recommendationRequest": "Great. Now generate your recommendation. Explain your reasoning first (which preset and why, which extra modules and roles and why), then output the JSON configuration. Remember: include ALL non-base roles the company needs in the roles array (engineer is NOT a base role — list it if this project involves code). Write a thorough companyDescription that captures everything we discussed."
5
+ "recommendationRequest": "Great. Now generate your recommendation. Explain your reasoning first (which preset and why, which extra modules and roles and why), then output the JSON configuration. Remember: include ALL non-base roles the company needs in the roles array (engineer is NOT a base role — list it if this project involves code). Write a thorough companyDescription that captures everything we discussed. The primary project must explicitly choose repository setup: either a fresh local Git repository or an external Git repository such as GitHub. Never include credentials or tokens in repository fields."
6
6
  }
@@ -35,6 +35,10 @@ Given a natural language description of what the user wants to build, you select
35
35
  6. Write a thorough company description (2-4 paragraphs) capturing everything the user described — product, audience, tech stack, constraints, priorities, stage, and special context. This is the company's permanent record.
36
36
  7. Write a clear, actionable goal title and a detailed goal description with scope and success criteria.
37
37
  8. Name and describe the main project concretely.
38
+ 9. Always decide the repository setup for the primary project:
39
+ - If the user gives an existing GitHub/GitLab/remote Git repo, set `workspace.sourceType: "git_repo"`, include `repoUrl`, set `repoRef`/`defaultRef` when known (default to `origin/main`), and use `executionWorkspacePolicy.defaultMode: "isolated_workspace"` with a `git_worktree` strategy.
40
+ - If no external repository is given, assume Paperclip should create a fresh local Git repository. Set `workspace.sourceType: "local_path"`, `workspace.defaultRef: "main"`, `workspace.setupCommand: "git init -b main"`, and `workspace.isPrimary: true`.
41
+ - Never include credentials or tokens in repository URLs or project text.
38
42
 
39
43
  First write one paragraph explaining your reasoning: why this preset, why these modules, why these roles.
40
44
 
@@ -2,6 +2,8 @@ This is your bootstrap task. Create all the Paperclip objects listed below **in
2
2
 
3
3
  Each section (Goals, Projects, Labels, Agents, Issues, Routines) contains objects to create via the Paperclip API.
4
4
 
5
+ **The endpoints and payload shapes you need are listed in this file and in the `paperclip` skill. Do NOT read or grep the Paperclip server source (e.g. `server/src/routes/*`, `packages/shared/src/validators/*`) to reverse-engineer request schemas — the field names, references, and valid enum values below are authoritative. If a create call is rejected, fix it from the documented enums here, not by inspecting source.**
6
+
5
7
  **How to read the metadata:**
6
8
 
7
9
  - Direct values like `level: company` or `priority: high` → use as-is in the API call
@@ -13,8 +15,8 @@ Each section (Goals, Projects, Labels, Agents, Issues, Routines) contains object
13
15
 
14
16
  **Creation order** (respects dependencies):
15
17
 
16
- 1. **Goals** — top-level first, then sub-goals. Sub-goals have `parentId: → "Parent Title"` create the parent first, then use its ID
17
- 2. **Projects** — reference goals via `goalIds`. Create after all goals exist. For Paperclip v2026.403.0, create the project workspace as an object: `workspace: { sourceType: "local_path", cwd: "...", isPrimary: true }`, not as a raw string.
18
+ 1. **Goals** — create with `POST /api/companies/{companyId}/goals` using `{ title, description, level, parentId? }`. Top-level first, then sub-goals: sub-goals have `parentId: → "Parent Title"`, so create the parent first and use its ID. Valid `level`: `company`, `team`, `agent`, `task`. Valid `status` (optional, defaults to `planned`): `planned`, `active`, `achieved`, `cancelled`.
19
+ 2. **Projects** — create with `POST /api/companies/{companyId}/projects` using `{ name, description, goalIds, workspace, executionWorkspacePolicy? }`. Reference goals via `goalIds`; create after all goals exist. Valid project `status` (optional, defaults to `backlog`): `backlog`, `planned`, `in_progress`, `completed`, `cancelled` — **`active` is a goal status, NOT a project status; do not set it on a project.** Create the project workspace as an object, not a raw string. Fresh/new repositories use a local project workspace such as `workspace: { sourceType: "local_path", cwd: "...", defaultRef: "main", setupCommand: "git init -b main", isPrimary: true }` and must initialize Git before work starts; do not attach an `executionWorkspacePolicy` to a fresh local repo (the repo has no base ref yet). Existing repository-backed projects use `workspace: { sourceType: "git_repo", repoUrl: "...", repoRef: "origin/main", defaultRef: "origin/main", isPrimary: true }` and may include `executionWorkspacePolicy` for isolated worktrees. Never inline credentials in repo URLs.
18
20
  3. **Labels** — if the bootstrap includes an Issues section, create issue labels first (`POST /api/companies/{companyId}/labels` with `{ name, color }`). Colors must be 6-digit hex strings with a leading `#`.
19
21
  4. **Agents** — hire via governance (`POST /api/companies/{companyId}/agent-hires`) using the listed `adapterType`, nested `adapterConfig`, `runtimeConfig`, `capabilities`, and `metadata`. The Company Wizard already created the CEO for this bootstrap issue; reuse/update any existing agent with the same `metadata.templateRole` instead of creating a duplicate.
20
22
  5. **Issues** — every issue must include `projectId`, including subtasks. Subtasks must also include `parentId`. Assign via `assigneeAgentId` or `assigneeUserId`, and attach labels via `labelIds`. If you use `POST /api/issues/{parentId}/children`, still pass `projectId` explicitly for clarity; if you use `POST /api/companies/{companyId}/issues`, passing both `parentId` and `projectId` is mandatory for this bootstrap.
@@ -27,4 +29,12 @@ Each section (Goals, Projects, Labels, Agents, Issues, Routines) contains object
27
29
  - Do not auto-reopen a `done` parent/subissue unless you have an explicit reason and record it in a comment.
28
30
  - Do not implicitly reuse a parent workspace for subissues; keep `projectId` explicit and use isolated checkouts/workspaces unless explicit instructions request shared workspace use.
29
31
 
32
+ **Review workflow guardrail:**
33
+
34
+ - Required PR reviews are tracked as explicit assigned child issues, not @-mentions. When an engineer opens a PR, set the implementation issue to `in_review` and create review child issues assigned to Code Reviewer and Product Owner, plus Security/QA/UI/DevOps child issues when that domain is materially affected. Reviewers close only their own child issue; the engineer owns merge and parent closure. Follow `docs/pr-conventions.md` when the PR review module is active.
35
+
36
+ **Secrets guardrail:**
37
+
38
+ - Never embed tokens, API keys, banking/SEPA credentials, provider keys, or connection strings in this file, in issue text, or in `adapterConfig`. Provision them as Paperclip company secrets and reference them via `secret_ref` / project `env`. If any secret was pasted in plaintext, rotate it.
39
+
30
40
  **After bootstrap**: keep labels current. When creating new issues in heartbeat cycles, always include explicit `projectId` on every issue, keep subissue parent links explicit, and attach appropriate `labelIds`.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Only if the Product Owner is absent or stalled:
4
4
 
5
- 1. Query idle agents: `GET /api/companies/{companyId}/agents?status=idle`
5
+ 1. Query idle agents: `GET /api/companies/{companyId}/agents`, then filter client-side for those where `status == "idle"`
6
6
  2. If agents are idle with unassigned issues AND PO hasn't acted recently:
7
7
  - Assign the highest-priority unassigned issue to the most suitable idle agent.
8
8
  - Comment on the issue noting the assignment.
@@ -6,7 +6,7 @@ The Product Owner primarily handles issue assignment. You are the fallback — s
6
6
 
7
7
  On your heartbeat, after handling your own assignments:
8
8
 
9
- 1. Query idle agents: `GET /api/companies/{companyId}/agents?status=idle`
9
+ 1. Query idle agents: `GET /api/companies/{companyId}/agents`, then filter client-side for those where `status == "idle"`
10
10
  2. If agents have been idle with unassigned issues available AND the Product Owner hasn't acted recently:
11
11
  - Assign the highest-priority unassigned issue to the most suitable idle agent
12
12
  - Comment on the issue noting the assignment
@@ -2,7 +2,7 @@
2
2
 
3
3
  After handling your own assignments:
4
4
 
5
- 1. Query idle agents: `GET /api/companies/{companyId}/agents?status=idle`
5
+ 1. Query idle agents: `GET /api/companies/{companyId}/agents`, then filter client-side for those where `status == "idle"`
6
6
  2. Query unassigned todo issues: `GET /api/companies/{companyId}/issues?status=todo&unassigned=true`
7
7
  3. For each idle agent that matches the issue requirements:
8
8
  - Pick the highest-priority unassigned issue.
@@ -19,7 +19,7 @@
19
19
  "title": "Auto-assign unassigned issues",
20
20
  "description": "Find unassigned todo issues and assign to the best available agent based on role and workload.",
21
21
  "assignTo": "capability:auto-assign",
22
- "schedule": "0 9,13 * * 1-5",
22
+ "schedule": "0 */2 * * *",
23
23
  "priority": "medium",
24
24
  "concurrencyPolicy": "skip_if_active"
25
25
  }
@@ -6,7 +6,7 @@ You own issue assignment. Match issues to the right agents based on skills and a
6
6
 
7
7
  Run this on every heartbeat, after handling your own assignments.
8
8
 
9
- 1. Query idle agents: `GET /api/companies/{companyId}/agents?status=idle`
9
+ 1. Query idle agents: `GET /api/companies/{companyId}/agents`, then filter client-side for those where `status == "idle"`
10
10
  2. Query unassigned todo issues: `GET /api/companies/{companyId}/issues?status=todo&unassigned=true`
11
11
  3. For each idle agent that matches the issue requirements:
12
12
  - Pick the highest-priority unassigned issue
@@ -15,15 +15,16 @@
15
15
  {
16
16
  "title": "Create roadmap and generate initial backlog",
17
17
  "assignTo": "capability:backlog-health",
18
- "description": "Review the company goal, create a ROADMAP.md with milestones, then generate the first batch of actionable issues from it."
18
+ "priority": "high",
19
+ "description": "Review the company goal, create a ROADMAP.md with milestones, then generate an initial backlog of 15-20 actionable issues from it so the team has immediate, parallelizable work. Scope each issue to a single deliverable, set priorities, and link issues to the relevant goal and project. Don't wait for grooming cycles to fill the backlog — seed it now."
19
20
  }
20
21
  ],
21
22
  "routines": [
22
23
  {
23
24
  "title": "Backlog grooming",
24
- "description": "Ensure backlog has at least 3 actionable unassigned issues. If running low, generate new issues from the roadmap.",
25
+ "description": "Ensure the backlog keeps at least 8 actionable unassigned issues ready. If running low, generate new issues from the roadmap so agents never idle waiting for work.",
25
26
  "assignTo": "capability:backlog-health",
26
- "schedule": "0 10 * * 1,3,5",
27
+ "schedule": "0 */4 * * *",
27
28
  "priority": "medium",
28
29
  "concurrencyPolicy": "skip_if_active"
29
30
  }
@@ -75,6 +75,7 @@
75
75
  "title": "API health check",
76
76
  "description": "Verify the API health endpoint responds correctly and monitor uptime.",
77
77
  "schedule": "*/15 * * * *",
78
+ "concurrencyPolicy": "skip_if_active",
78
79
  "assignTo": "engineer"
79
80
  },
80
81
  {
@@ -99,7 +99,8 @@
99
99
  "title": "CI pipeline health check",
100
100
  "description": "Review recent CI runs for failures, flaky tests, and slow builds. Flag regressions and report pipeline health status.",
101
101
  "assignTo": "capability:ci-cd",
102
- "schedule": "0 9 * * 1-5"
102
+ "schedule": "0 */6 * * *",
103
+ "concurrencyPolicy": "skip_if_active"
103
104
  }
104
105
  ]
105
106
  }
@@ -10,6 +10,24 @@
10
10
  "ceo"
11
11
  ],
12
12
  "fallbackSkill": "game-design.fallback"
13
+ },
14
+ {
15
+ "skill": "level-design",
16
+ "owners": [
17
+ "level-designer",
18
+ "game-designer",
19
+ "engineer"
20
+ ],
21
+ "fallbackSkill": "level-design.fallback"
22
+ },
23
+ {
24
+ "skill": "audio-design",
25
+ "owners": [
26
+ "audio-designer",
27
+ "game-designer",
28
+ "engineer"
29
+ ],
30
+ "fallbackSkill": "audio-design.fallback"
13
31
  }
14
32
  ],
15
33
  "issues": [
@@ -0,0 +1,16 @@
1
+ # Skill: Audio Design (Fallback)
2
+
3
+ The Audio Designer primarily owns the game's audio. You are the fallback — step in only if no audio designer is present and the game has no usable sound.
4
+
5
+ ## Audio Design (Fallback)
6
+
7
+ 1. If `docs/GDD.md` exists but there is no audio and no audio designer is active:
8
+ - Add placeholder sounds for the gameplay-critical events first (player action, hit, pickup, success, failure) so feedback is legible.
9
+ - Note the intended character of each sound in `docs/AUDIO-DIRECTION.md` and mark it **provisional**.
10
+ - Keep volumes in config, not hardcoded.
11
+ 2. If an audio designer is active, skip this entirely.
12
+
13
+ ## Rules
14
+
15
+ - This is a safety net. Placeholder feedback sounds beat silence; mood and music can wait.
16
+ - Don't produce final audio or design the full soundscape — leave that to the Audio Designer.
@@ -0,0 +1,28 @@
1
+ # Skill: Audio Design
2
+
3
+ You own the game's audio: sound effects, music, ambient soundscapes, and the systems that play them. You turn the audio direction in `docs/GDD.md` into concrete, production-quality audio.
4
+
5
+ ## Audio Design Document
6
+
7
+ Create and maintain `docs/AUDIO-DIRECTION.md`. It must cover:
8
+
9
+ 1. **Audio vision** — The feeling the audio should evoke and reference tracks/games. One paragraph.
10
+ 2. **Music** — Themes per context (menu, gameplay, boss, victory, defeat), tempo/mood, and whether audio is adaptive (layers/stems that respond to state).
11
+ 3. **SFX taxonomy** — The full list of events that need a sound (player actions, UI, enemies, environment, feedback) with intended character for each (punchy, soft, organic, synthetic).
12
+ 4. **Ambience** — Background beds per area/level and how they transition.
13
+ 5. **Mix guidance** — Priority of layers, ducking rules (e.g. dialogue over music), and target loudness so nothing clips or buries gameplay cues.
14
+ 6. **Asset pipeline** — Where audio files live, naming convention, format, and how they're wired into the engine.
15
+
16
+ ## Production Work
17
+
18
+ 1. Produce audio with AI generation tools, code-based synthesis, or processing pipelines — whatever the tech stack supports.
19
+ 2. Replace any placeholder/programmer sounds the engineer added with production audio.
20
+ 3. Keep every gameplay-critical action audibly distinct — the player should recognize what happened without looking.
21
+ 4. On each heartbeat, if `docs/GDD.md` exists, check for new mechanics or events that lack audio and create issues to cover them.
22
+
23
+ ## Rules
24
+
25
+ - Function before flourish: feedback sounds (hit, pickup, error) matter more than mood pieces. Do them first.
26
+ - Respect the mix — audio that fights gameplay cues is worse than silence.
27
+ - Parameterize volumes and keep them in config, never hardcoded.
28
+ - Don't redefine the art or game direction; audio serves the experience defined in the GDD.
@@ -0,0 +1,17 @@
1
+ # Skill: Level Design (Fallback)
2
+
3
+ The Level Designer primarily owns level layout and pacing. You are the fallback — step in only if no level designer is present and levels are blocking progress.
4
+
5
+ ## Level Design (Fallback)
6
+
7
+ 1. If `docs/GDD.md` exists but no level structure has been defined and no level designer is active:
8
+ - Sketch a minimal progression in `docs/LEVEL-DESIGN.md`: an ordered list of levels/areas and the one mechanic or challenge each introduces.
9
+ - Set a rough difficulty curve (easy → hard) and place checkpoints generously.
10
+ - Mark the document as **provisional** — it needs a dedicated level-design pass.
11
+ 2. If a level designer is active, skip this entirely.
12
+
13
+ ## Rules
14
+
15
+ - This is a safety net. Define enough structure that the team can build and test, no more.
16
+ - Teach before you test: introduce each mechanic in a safe space first.
17
+ - Don't tune detailed difficulty or pacing — leave that to the Level Designer.
@@ -0,0 +1,29 @@
1
+ # Skill: Level Design
2
+
3
+ You own the layout, pacing, and difficulty progression of the game's playable spaces. You translate the mechanics defined in `docs/GDD.md` into concrete levels the player moves through.
4
+
5
+ ## Level Design Document
6
+
7
+ Create and maintain `docs/LEVEL-DESIGN.md`. It must cover:
8
+
9
+ 1. **Progression map** — The order players experience levels/areas, and what each one introduces (a new mechanic, enemy, or twist). Nothing should appear before it's taught.
10
+ 2. **Difficulty curve** — How challenge ramps across the game. Mark intended spikes (boss, finale) and recovery beats (safe rooms, low-stakes sections).
11
+ 3. **Pacing** — Alternation of tension and release: action vs. exploration vs. puzzle vs. rest. Avoid long stretches of one texture.
12
+ 4. **Per-level beats** — For each level: goal, critical path, optional content, the one moment it's built around, and the skill it tests.
13
+ 5. **Spatial language** — How layout teaches without text: sightlines, lighting, landmarks, affordances that signal "go here" or "danger".
14
+ 6. **Tuning hooks** — Level-specific parameters (enemy counts, time limits, checkpoint spacing) referenced by name, defaults in the GDD.
15
+
16
+ ## Ongoing Design Work
17
+
18
+ On each heartbeat when `docs/GDD.md` exists:
19
+
20
+ 1. If `docs/PLAYTEST-RESULTS.md` exists, look for levels where players got stuck, lost, or bored, and where the difficulty curve broke.
21
+ 2. Adjust layout, checkpoint placement, or pacing — change one variable at a time so cause and effect stay legible.
22
+ 3. Create issues for new levels, reworks, or difficulty passes, each tied to a specific player-experience problem.
23
+
24
+ ## Rules
25
+
26
+ - Teach before you test. Introduce a mechanic in a safe space before demanding mastery.
27
+ - A level should be built around one memorable moment — find it, then make the rest serve it.
28
+ - Respect the GDD: levels express the game's mechanics, they don't invent new ones. If a level needs a new mechanic, raise it with the Game Designer.
29
+ - Pace deliberately. Constant intensity is exhausting; constant calm is dull.
@@ -6,6 +6,7 @@ Enables the Engineer to work in a GitHub repository.
6
6
 
7
7
  - **Shared docs**: `docs/git-workflow.md` — commit conventions, branch rules
8
8
  - **Engineer skill**: Git workflow instructions for working in a repo
9
+ - **Foundation issue**: `Prepare GitHub repository` is marked critical and ordered before normal implementation work. The assignee verifies an already-provisioned git workspace/remote or creates and pushes the repository before closing it.
9
10
 
10
11
  ## Variants
11
12
 
@@ -4,9 +4,12 @@
4
4
  "capabilities": [],
5
5
  "issues": [
6
6
  {
7
- "title": "Initialize GitHub repository",
7
+ "title": "Prepare GitHub repository",
8
8
  "assignTo": "engineer",
9
- "description": "Create the GitHub repository, initialize with README, push initial commit to main, and set up branch protection if using PR workflow."
9
+ "priority": "critical",
10
+ "bootstrapPhase": "foundation",
11
+ "labels": ["chore"],
12
+ "description": "Foundation setup: handle this before normal implementation issues. For a fresh repository, create the GitHub repository, initialize local workspace with a README or bootstrap commit, add origin, push main, and record the repository URL. For an existing repository, verify the workspace has a reachable remote, current default branch, and starter commit state; escalate to CEO if repo setup is missing instead of silently closing the issue. Branch protection is tracked separately by the pr-review module when that workflow is enabled."
10
13
  }
11
14
  ]
12
15
  }
@@ -18,18 +18,18 @@ Adds a PR-based review workflow with dedicated reviewer roles.
18
18
 
19
19
  1. Engineer creates a feature branch (`<prefix>-<N>/<short-description>`)
20
20
  2. Engineer opens a PR with Conventional Commits title and issue reference
21
- 3. Engineer @-mentions Code Reviewer and Product Owner on the issue (plus other reviewers if present and relevant)
21
+ 3. Engineer sets the originating issue's `executionPolicy`: a `review` stage for the Code Reviewer, optional `review` stages for relevant domain reviewers, and a final `approval` stage for the Product Owner (roles resolved to agentIds); the PR link is added as an issue comment
22
22
  4. Code Reviewer reviews for correctness, security, style, simplicity
23
23
  5. Product Owner reviews for intent alignment, scope discipline, acceptance criteria
24
24
  6. UI Designer reviews for visual consistency, brand compliance *(when present)*
25
25
  7. UX Researcher reviews for usability and user flow integrity *(when present)*
26
26
  8. QA reviews for test coverage, edge cases, regression risk *(when present)*
27
27
  9. DevOps reviews for infrastructure impact, security, performance *(when present)*
28
- 10. Engineer merges when required reviewers approve and no domain blockers remain
28
+ 10. Engineer merges when all stages are approved (no `changes_requested` outstanding)
29
29
 
30
30
  ## Handover mechanism
31
31
 
32
- @-mention on the originating issue. If a reviewer doesn't wake, the CEO's stall-detection (if enabled) will catch it.
32
+ The issue's native `executionPolicy` (`review`/`approval` stages). Each reviewer is the active participant of a stage and records an `approved` / `changes_requested` verdict, optionally mirrored as a GitHub PR comment. If a reviewer doesn't wake, the CEO's stall-detection (if enabled) will catch it.
33
33
 
34
34
  ## Best for
35
35
 
@@ -39,5 +39,5 @@ Adds a PR-based review workflow with dedicated reviewer roles.
39
39
 
40
40
  ## Known limitations
41
41
 
42
- - All agents sharing one GitHub account means GitHub-native approval flow doesn't work. Review governance happens through Paperclip, not GitHub branch protection.
43
- - Agent-to-agent @-mentions may not always trigger wakes reliably. Pair with `stall-detection` module.
42
+ - All agents sharing one GitHub account means GitHub-native approval flow doesn't work. Review governance happens through the issue's executionPolicy stages, not GitHub-required approving reviews.
43
+ - If a review stage's participant is not picked up, the CEO's stall-detection (if enabled) should catch it.
@@ -1,6 +1,6 @@
1
1
  # Skill: Code Review
2
2
 
3
- You review PRs for correctness, security, code quality, and simplicity. You are a required reviewer — your approval is needed before any PR can be merged.
3
+ You review PRs for correctness, security, code quality, and simplicity. You are a required reviewer — you are the participant of a `review` stage on the PR's issue, and your verdict gates the merge.
4
4
 
5
5
  ## Review Checklist
6
6
 
@@ -14,11 +14,11 @@ You review PRs for correctness, security, code quality, and simplicity. You are
14
14
 
15
15
  ## How to Review
16
16
 
17
- 1. When @-mentioned on an issue with a PR link, review the PR on GitHub.
18
- 2. Use `gh pr review` with:
19
- - `--approve` if the code meets quality standards
20
- - `--request-changes` with specific, actionable feedback if not
21
- 3. Post your verdict on the originating issue.
17
+ 1. When you are the active participant of a review stage on an issue with a PR link, review the PR diff (check out locally if useful).
18
+ 2. Record your verdict on your review stage:
19
+ - **approved** if the code meets quality standards
20
+ - **changes_requested** with specific, actionable feedback if not
21
+ 3. Optionally mirror the same verdict as a GitHub PR comment for visibility.
22
22
 
23
23
  ## Rules
24
24
 
@@ -27,3 +27,4 @@ You review PRs for correctness, security, code quality, and simplicity. You are
27
27
  - "Looks good" is not a review. Be specific about what you verified.
28
28
  - Block on correctness, security, and clear bugs. Suggest on style and optimization.
29
29
  - If a PR is too large to review effectively, request it be split.
30
+ - Your review stage verdict is the governance signal. Do not block only because GitHub rejects formal review submission from the shared PR-author credential — GitHub-native approval is optional unless a distinct non-author reviewer credential is explicitly available.
@@ -14,12 +14,12 @@ You review PRs for infrastructure impact, performance, security, and operational
14
14
 
15
15
  ## How to Review
16
16
 
17
- 1. When @-mentioned on an issue with a PR link, review the PR on GitHub.
18
- 2. Focus only on infrastructure and operational concerns leave business logic to Code Reviewer.
19
- 3. Post your review using `gh pr review` with:
20
- - `--approve` if operationally sound
21
- - `--request-changes` with specific concerns if not
22
- 4. Post your verdict on the originating issue.
17
+ 1. When you are the active participant of a review stage on an issue with a PR link, review the PR.
18
+ 2. Focus on infrastructure, deployment, runtime security, observability, and rollback risk.
19
+ 3. Record your verdict on your review stage:
20
+ - **approved** if operationally sound
21
+ - **changes_requested** with specific concerns if not
22
+ 4. Optionally mirror the same verdict as a GitHub PR comment for visibility.
23
23
 
24
24
  ## Rules
25
25
 
@@ -9,16 +9,21 @@ When this skill is active, you work in feature branches and open PRs instead of
9
9
  3. Make your changes, commit with Conventional Commits format
10
10
  4. Push branch: `git push -u origin <branch-name>`
11
11
  5. Open PR: `gh pr create --title "<type>: <description>" --body "<template>"`
12
- 6. Set originating issue to `in_review`
13
- 7. @-mention @Code Reviewer and @Product Owner on the issue with the PR link (also @UI Designer, @UX Researcher, @QA, @DevOps if present and relevant)
14
- 8. Wait for reviews
15
- 9. When Code Reviewer and Product Owner both approve (and no domain blockers from other reviewers): `gh pr merge <number> --merge`
16
- 10. Set issue to `done`
12
+ 6. Set the originating issue's `executionPolicy` to gate the merge on review:
13
+ - One `review` stage with the **Code Reviewer** as participant (always).
14
+ - Additional `review` stages for any relevant domain reviewer that exists in the team (UI Designer for UI diffs, UX Researcher for flow changes, QA for logic/test-sensitive changes, DevOps for infra/deploy/dependency changes).
15
+ - A final `approval` stage with the **Product Owner** as participant (always).
16
+ - Resolve each role to its agentId first (look up active agents), then set the policy on the issue. Include the PR link in an issue comment so reviewers can find it.
17
+ 7. Move the originating issue to `in_review`.
18
+ 8. Wait for the issue to clear its stages. Each reviewer records `approved` or `changes_requested` on their stage; verdicts may be mirrored as PR comments.
19
+ 9. When all stages are approved (no `changes_requested` outstanding): `gh pr merge <number> --merge`, then set the issue to `done`.
17
20
 
18
21
  ## Rules
19
22
 
20
23
  - Never commit directly to main (except typos/comment-only/doc fixes with issue reference).
21
24
  - One PR per issue. Keep changes focused.
22
25
  - Always include `Closes [PREFIX-N]` in the PR body.
23
- - If reviewers request changes, address them and push to the same branch.
26
+ - If a reviewer requests changes, address them, push to the same branch, and re-request review (the stage re-runs).
24
27
  - You are the merge owner — never ask reviewers to merge.
28
+ - Do not create separate child review issues and do not use @-mentions to request review; the executionPolicy stages are the governance signal.
29
+ - Do not wait for GitHub-native approving reviews when all agents share the same GitHub credential; GitHub rejects self-approval. The Paperclip executionPolicy stages are the required signal unless a separate non-author GitHub reviewer credential is explicitly available.
@@ -1,6 +1,6 @@
1
1
  # Skill: Product Review
2
2
 
3
- You review PRs for intent alignment, scope discipline, and acceptance criteria. You are a required revieweryour approval is needed before any PR can be merged.
3
+ You review PRs for intent alignment, scope discipline, and acceptance criteria. You are the final approveryou are the participant of the `approval` stage on the PR's issue, and your sign-off is the last gate before merge.
4
4
 
5
5
  ## Review Checklist
6
6
 
@@ -13,11 +13,11 @@ You review PRs for intent alignment, scope discipline, and acceptance criteria.
13
13
 
14
14
  ## How to Review
15
15
 
16
- 1. When @-mentioned on an issue with a PR link, review the PR on GitHub.
17
- 2. Post your review as a PR comment with:
18
- - **Approve** if the change meets product requirements
19
- - **Request changes** with specific feedback tied to acceptance criteria
20
- 3. Post your verdict on the originating issue.
16
+ 1. When you are the active participant of the approval stage on an issue with a PR link, review the PR against the originating issue.
17
+ 2. Record your verdict on your approval stage:
18
+ - **approved** if the change meets product requirements
19
+ - **changes_requested** with specific feedback tied to acceptance criteria
20
+ 3. Optionally mirror the same verdict as a GitHub PR comment for visibility.
21
21
 
22
22
  ## Rules
23
23
 
@@ -25,3 +25,4 @@ You review PRs for intent alignment, scope discipline, and acceptance criteria.
25
25
  - Every PR should trace back to an issue. If it doesn't, ask why.
26
26
  - Reject scope creep firmly but constructively — suggest filing a separate issue.
27
27
  - If acceptance criteria are ambiguous, clarify them before approving.
28
+ - Your approval stage verdict is the final governance signal. Do not block only because GitHub rejects formal review submission from the shared PR-author credential — GitHub-native approval is optional unless a distinct non-author reviewer credential is explicitly available.
@@ -14,12 +14,12 @@ You review PRs for test coverage, edge cases, and regression risk. When a PR cha
14
14
 
15
15
  ## How to Review
16
16
 
17
- 1. When @-mentioned on an issue with a PR link, review the PR on GitHub.
18
- 2. Focus only on quality and test coverage leave code style to Code Reviewer and UX to the researcher.
19
- 3. Post your review using `gh pr review` with:
20
- - `--approve` if quality is adequate
21
- - `--request-changes` with specific gaps and suggested test cases if not
22
- 4. Post your verdict on the originating issue.
17
+ 1. When you are the active participant of a review stage on an issue with a PR link, review the PR.
18
+ 2. Focus on test coverage, regression risk, and validation strategy.
19
+ 3. Record your verdict on your review stage:
20
+ - **approved** if quality is adequate
21
+ - **changes_requested** with specific gaps and suggested test cases if not
22
+ 4. Optionally mirror the same verdict as a GitHub PR comment for visibility.
23
23
 
24
24
  ## Rules
25
25
 
@@ -14,12 +14,12 @@ You review PRs for visual quality, brand consistency, and accessibility. When a
14
14
 
15
15
  ## How to Review
16
16
 
17
- 1. When @-mentioned on an issue with a PR link, review the PR on GitHub.
18
- 2. Focus only on design and visual concerns — leave code logic to Code Reviewer.
19
- 3. Post your review using `gh pr review` with:
20
- - `--approve` if visually sound
21
- - `--request-changes` with specific, actionable feedback if not
22
- 4. Post your verdict on the originating issue.
17
+ 1. When you are the active participant of a review stage on an issue with a PR link, review the PR.
18
+ 2. Focus only on visual/design concerns — leave code logic to Code Reviewer and product scope to Product Owner.
19
+ 3. Record your verdict on your review stage:
20
+ - **approved** if visually sound
21
+ - **changes_requested** with specific, actionable feedback if not
22
+ 4. Optionally mirror the same verdict as a GitHub PR comment for visibility.
23
23
 
24
24
  ## Rules
25
25