@starlein/paperclip-plugin-company-wizard 0.4.6 → 0.4.9
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.
- package/CHANGELOG.md +78 -0
- package/README.md +6 -4
- package/dist/manifest.js +1 -1
- package/dist/manifest.js.map +1 -1
- package/dist/ui/index.css +82 -0
- package/dist/ui/index.css.map +2 -2
- package/dist/ui/index.js +422 -137
- package/dist/ui/index.js.map +4 -4
- package/dist/worker.js +352 -21
- package/dist/worker.js.map +3 -3
- package/package.json +1 -1
- package/templates/bootstrap-instructions.md +2 -2
- package/templates/modules/architecture-plan/agents/ceo/skills/architecture-plan.bar.md +17 -0
- package/templates/modules/architecture-plan/agents/ui-designer/skills/architecture-plan.md +2 -0
- package/templates/modules/architecture-plan/agents/ui-designer/skills/design-system.md +5 -4
- package/templates/modules/architecture-plan/skills/architecture-plan.md +1 -1
- package/templates/modules/architecture-plan/skills/design-system.md +25 -0
- package/templates/modules/auto-assign/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/auto-assign/agents/product-owner/heartbeat-section.md +1 -1
- package/templates/modules/backlog/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/backlog/agents/ceo/skills/backlog-health.fallback.md +2 -0
- package/templates/modules/backlog/agents/product-owner/heartbeat-section.md +1 -1
- package/templates/modules/backlog/docs/backlog-process.md +38 -1
- package/templates/modules/backlog/docs/backlog-template.md +1 -1
- package/templates/modules/backlog/module.meta.json +1 -1
- package/templates/modules/backlog/skills/backlog-health.bar.md +2 -0
- package/templates/modules/backlog/skills/backlog-health.md +7 -4
- package/templates/modules/brand-identity/agents/ceo/skills/brand-identity.fallback.md +4 -4
- package/templates/modules/brand-identity/skills/brand-identity.md +1 -1
- package/templates/modules/ci-cd/agents/engineer/skills/ci-cd.fallback.md +2 -1
- package/templates/modules/ci-cd/skills/ci-cd.md +13 -2
- package/templates/modules/codebase-onboarding/agents/ceo/skills/codebase-audit.fallback.md +10 -0
- package/templates/modules/competitive-intel/agents/product-owner/skills/competitive-tracking.fallback.md +19 -0
- package/templates/modules/competitive-intel/skills/competitive-tracking.bar.md +11 -0
- package/templates/modules/competitive-intel/skills/competitive-tracking.md +1 -1
- package/templates/modules/dependency-management/module.meta.json +9 -0
- package/templates/modules/dependency-management/skills/dependency-audit.md +8 -5
- package/templates/modules/documentation/skills/project-docs.bar.md +13 -0
- package/templates/modules/game-design/skills/game-design.bar.md +13 -0
- package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +79 -17
- package/templates/modules/github-repo/docs/git-workflow.md +34 -16
- package/templates/modules/market-analysis/agents/ux-researcher/skills/market-analysis.md +1 -1
- package/templates/modules/market-analysis/docs/market-analysis-template.md +17 -0
- package/templates/modules/market-analysis/skills/market-analysis.md +1 -1
- package/templates/modules/monitoring/agents/engineer/skills/monitoring.fallback.md +1 -1
- package/templates/modules/monitoring/skills/monitoring.md +3 -1
- package/templates/modules/pr-review/agents/code-reviewer/skills/code-review.md +19 -5
- package/templates/modules/pr-review/agents/devops/skills/infra-review.md +6 -8
- package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +47 -12
- package/templates/modules/pr-review/agents/product-owner/skills/product-review.md +3 -2
- package/templates/modules/pr-review/agents/ui-designer/skills/design-review.md +4 -6
- package/templates/modules/pr-review/agents/ux-researcher/skills/ux-review.md +4 -6
- package/templates/modules/pr-review/docs/pr-conventions.md +4 -4
- package/templates/modules/pr-review/module.meta.json +1 -1
- package/templates/modules/release-management/agents/ceo/skills/release-process.fallback.md +20 -0
- package/templates/modules/release-management/module.meta.json +9 -0
- package/templates/modules/release-management/skills/release-process.md +7 -5
- package/templates/modules/security-audit/skills/threat-model.md +1 -1
- package/templates/modules/stall-detection/agents/ceo/heartbeat-section.md +1 -1
- package/templates/modules/tech-stack/skills/tech-stack.md +1 -1
- package/templates/modules/triage/agents/ceo/skills/issue-triage.fallback.md +2 -2
- package/templates/modules/triage/skills/issue-triage.md +1 -1
- package/templates/modules/user-testing/agents/qa/skills/user-testing.md +1 -1
- package/templates/modules/user-testing/skills/user-testing.md +1 -1
- package/templates/modules/vision-workshop/agents/ceo/skills/vision-workshop.md +1 -1
- package/templates/modules/website-relaunch/module.meta.json +0 -15
- package/templates/presets/repo-maintenance/preset.meta.json +3 -3
- package/templates/roles/audio-designer/role.meta.json +5 -2
- package/templates/roles/ceo/HEARTBEAT.md +1 -1
- package/templates/roles/cmo/AGENTS.md +15 -0
- package/templates/roles/cmo/HEARTBEAT.md +1 -1
- package/templates/roles/cmo/role.meta.json +2 -1
- package/templates/roles/code-reviewer/AGENTS.md +3 -3
- package/templates/roles/code-reviewer/HEARTBEAT.md +2 -1
- package/templates/roles/code-reviewer/role.meta.json +4 -1
- package/templates/roles/cto/AGENTS.md +22 -0
- package/templates/roles/cto/HEARTBEAT.md +1 -1
- package/templates/roles/cto/role.meta.json +2 -1
- package/templates/roles/customer-success/role.meta.json +2 -1
- package/templates/roles/devops/AGENTS.md +21 -0
- package/templates/roles/devops/HEARTBEAT.md +1 -1
- package/templates/roles/devops/role.meta.json +2 -1
- package/templates/roles/engineer/role.meta.json +2 -1
- package/templates/roles/game-artist/role.meta.json +5 -2
- package/templates/roles/game-designer/role.meta.json +4 -1
- package/templates/roles/level-designer/role.meta.json +4 -1
- package/templates/roles/product-owner/SOUL.md +4 -1
- package/templates/roles/product-owner/role.meta.json +4 -1
- package/templates/roles/qa/HEARTBEAT.md +3 -2
- package/templates/roles/qa/role.meta.json +2 -1
- package/templates/roles/security-engineer/AGENTS.md +7 -0
- package/templates/roles/security-engineer/role.meta.json +2 -1
- package/templates/roles/technical-writer/AGENTS.md +1 -1
- package/templates/roles/technical-writer/role.meta.json +2 -1
- package/templates/roles/ui-designer/HEARTBEAT.md +1 -1
- package/templates/roles/ui-designer/role.meta.json +2 -1
- package/templates/roles/ux-researcher/AGENTS.md +21 -0
- package/templates/roles/ux-researcher/HEARTBEAT.md +1 -1
- package/templates/roles/ux-researcher/role.meta.json +4 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@starlein/paperclip-plugin-company-wizard",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AI-powered wizard to bootstrap paperclip agent companies from composable templates (for latest paperclip version)",
|
|
6
6
|
"repository": "https://github.com/starlein/paperclip-plugin-company-wizard",
|
|
@@ -19,7 +19,7 @@ Each section (Goals, Projects, Labels, Agents, Issues, Routines) contains object
|
|
|
19
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 the workspace refs shown in this bootstrap exactly as rendered; do not rewrite them to `main`, `master`, or add/remove `origin/`. When this bootstrap includes `executionWorkspacePolicy`, send it exactly as rendered; it was included only because Paperclip's experimental isolated-workspaces setting is enabled, and its `workspaceStrategy.baseRef` comes from project/worktree settings. Never inline credentials in repo URLs.
|
|
20
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 `#`.
|
|
21
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.
|
|
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.
|
|
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. Set workspace isolation explicitly: **top-level issues** (no `parentId`) must include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree/branch; **subtasks** set `parentId` and omit `executionWorkspaceSettings` so they reuse the parent's workspace.
|
|
23
23
|
6. **Routines** — reference project and agent. Create the routine first, then add a schedule trigger with `POST /api/routines/{routineId}/triggers` using `{ kind: "schedule", cronExpression: schedule, timezone: "UTC" }`.
|
|
24
24
|
|
|
25
25
|
**Status + subissue guardrails:**
|
|
@@ -27,7 +27,7 @@ Each section (Goals, Projects, Labels, Agents, Issues, Routines) contains object
|
|
|
27
27
|
- Parent and subissue status are related by intent, not automatically coupled by tooling.
|
|
28
28
|
- Do not auto-mark a parent `done` just because a child changed status.
|
|
29
29
|
- Do not auto-reopen a `done` parent/subissue unless you have an explicit reason and record it in a comment.
|
|
30
|
-
-
|
|
30
|
+
- Make workspace intent explicit at creation; never rely on implicit inheritance. A top-level issue (no `parentId`) created without `executionWorkspaceSettings` silently adopts the workspace of whatever issue the creator currently has checked out, which serializes work and corrupts branch state. Therefore: top-level issues set `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` (own worktree); subissues set `parentId` and omit `executionWorkspaceSettings` so they deliberately share the parent's workspace (safe because the parent cannot be completed/cleaned up while subissues are open). Keep `projectId` explicit on both.
|
|
31
31
|
|
|
32
32
|
**Review workflow guardrail:**
|
|
33
33
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## Architecture Plan — Done Bar (CEO Fallback)
|
|
2
|
+
|
|
3
|
+
**Done:**
|
|
4
|
+
- `docs/ARCHITECTURE.md` exists with at least: a brief system overview (what the system does, its main components), the primary data flows, and a clear note that this is a CEO-generated placeholder pending engineer review.
|
|
5
|
+
- A follow-up issue exists, assigned to an engineer or the architecture-plan capability, to complete the full architecture document.
|
|
6
|
+
|
|
7
|
+
**Not done:**
|
|
8
|
+
- No `docs/ARCHITECTURE.md` exists at all.
|
|
9
|
+
- The document exists but contains no actionable overview (placeholder text only).
|
|
10
|
+
- No follow-up issue was created for the engineer to complete the work.
|
|
11
|
+
|
|
12
|
+
**Not required from the CEO fallback:**
|
|
13
|
+
- Full API boundary diagrams
|
|
14
|
+
- ADR-style decision log
|
|
15
|
+
- Deployment topology
|
|
16
|
+
- Data model details
|
|
17
|
+
(These are requirements for the engineer primary — not for the CEO safety-net run.)
|
|
@@ -4,6 +4,8 @@ When the architecture plan is being created, contribute the UI/frontend perspect
|
|
|
4
4
|
|
|
5
5
|
## UI Architecture Contributions
|
|
6
6
|
|
|
7
|
+
1. Check that `docs/ARCHITECTURE.md` exists. If it does not exist yet, the engineer's architecture-plan task has not completed — leave an issue comment ("Waiting for engineer to complete docs/ARCHITECTURE.md before adding UI layer") and do not close this issue yet. Check back on your next heartbeat.
|
|
8
|
+
|
|
7
9
|
If an Engineer is defining the architecture, coordinate with them on:
|
|
8
10
|
- **Frontend component structure**: Page layout, shared components, routing
|
|
9
11
|
- **Design token integration**: How the design system connects to the codebase
|
|
@@ -5,16 +5,17 @@ You own the visual design system. Establish the foundational patterns that ensur
|
|
|
5
5
|
## Design System Process
|
|
6
6
|
|
|
7
7
|
1. Review the company goal, brand context, and target audience
|
|
8
|
-
2.
|
|
8
|
+
2. If `docs/BRAND-IDENTITY.md` exists, use it as the authoritative source for color palette, typography, and brand voice. Do not invent a palette that contradicts established brand identity.
|
|
9
|
+
3. Define and document in `docs/DESIGN-SYSTEM.md`:
|
|
9
10
|
- **Color palette**: Primary, secondary, accent, semantic (success, error, warning), neutrals
|
|
10
11
|
- **Typography**: Font families, scale (heading/body/caption sizes), weights, line heights
|
|
11
12
|
- **Spacing**: Base unit and scale (4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px)
|
|
12
13
|
- **Component patterns**: Buttons, inputs, cards, modals, navigation — describe states and variants
|
|
13
14
|
- **Brand guidelines**: Logo usage, tone of visual language, iconography style
|
|
14
15
|
- **Responsive breakpoints**: Mobile, tablet, desktop sizing approach
|
|
15
|
-
|
|
16
|
-
- `POST /api/companies/{companyId}/issues` for CSS/design token setup, component library scaffolding. Include the active `projectId` (and `goalId` / `parentId` when applicable).
|
|
17
|
-
|
|
16
|
+
4. Create implementation issues for the engineer:
|
|
17
|
+
- `POST /api/companies/{companyId}/issues` for CSS/design token setup, component library scaffolding. Include the active `projectId` (and `goalId` / `parentId` when applicable). For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
|
|
18
|
+
5. Assign or hand off implementation issues to the Engineer with a concrete next action; do not rely on generic @-mentions.
|
|
18
19
|
|
|
19
20
|
## Rules
|
|
20
21
|
|
|
@@ -13,7 +13,7 @@ You own system architecture. Design the structure that implements the tech stack
|
|
|
13
13
|
- **Deployment model**: How the system is built, tested, and deployed
|
|
14
14
|
- **Key decisions**: Architectural decisions with rationale (ADR-style)
|
|
15
15
|
3. Create implementation issues for the foundational structure:
|
|
16
|
-
- `POST /api/companies/{companyId}/issues` for scaffolding, core modules, etc. Include the active `projectId` (and `goalId` / `parentId` when applicable).
|
|
16
|
+
- `POST /api/companies/{companyId}/issues` for scaffolding, core modules, etc. Include the active `projectId` (and `goalId` / `parentId` when applicable). For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
|
|
17
17
|
|
|
18
18
|
## Rules
|
|
19
19
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Skill: Design System (Engineer Primary)
|
|
2
|
+
|
|
3
|
+
You are establishing the project's design system foundations when no UI Designer is available. Your output should be practical and hand-off-ready — define the minimum tokens and patterns needed for consistent development, and document them so a UI Designer can refine them later.
|
|
4
|
+
|
|
5
|
+
## Steps
|
|
6
|
+
|
|
7
|
+
1. Read `docs/TECH-STACK.md` if it exists to understand the frontend framework and styling approach.
|
|
8
|
+
2. Read `docs/BRAND-IDENTITY.md` if it exists for color palette, typography, and brand direction.
|
|
9
|
+
3. If `docs/DESIGN-SYSTEM.md` does not exist, create it using `docs/design-system-template.md` as a starting point.
|
|
10
|
+
4. Define the minimum viable token set:
|
|
11
|
+
- **Colors**: primary, secondary, background, surface, text, error/warning/success. Use the brand palette if available, otherwise choose accessible defaults (WCAG AA contrast ratio ≥ 4.5:1 for text).
|
|
12
|
+
- **Typography**: 2–3 font sizes (body, heading, small), font family (system stack if no brand font specified), line heights.
|
|
13
|
+
- **Spacing**: a 4px base grid — common values: 4, 8, 12, 16, 24, 32, 48, 64px.
|
|
14
|
+
5. Define 3–5 core component patterns (button, input, card, navigation item) with their states (default, hover, active, disabled, error). Document as usage rules, not full component code.
|
|
15
|
+
6. Write token definitions as CSS custom properties or the equivalent for the project's framework.
|
|
16
|
+
7. Mark the document as **provisional** — created by engineer as primary; a UI Designer should review and extend.
|
|
17
|
+
8. Create a follow-up issue: "Review and extend design system" assigned to the UI Designer if one is ever added to the team.
|
|
18
|
+
9. Mark this issue done.
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
|
|
22
|
+
- Keep it practical over perfect. Consistent tokens are more valuable than a comprehensive design system.
|
|
23
|
+
- Do not create visual assets (icons, illustrations) — document where placeholders should go.
|
|
24
|
+
- Reference `docs/ARCHITECTURE.md` for the component hierarchy if it exists.
|
|
25
|
+
- If `docs/DESIGN-SYSTEM.md` already exists (a UI Designer ran first), review it for engineering feasibility and add implementation notes — do not overwrite their work.
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
|
|
3
3
|
Primary assignment happens at backlog grooming — issues are assigned to the best-fit agent as they are created. This routine is a **safety net** that catches stragglers when the Product Owner hasn't acted.
|
|
4
4
|
|
|
5
|
-
Do not scan for unassigned work during a normal heartbeat. If you are assigned a routine-run issue titled like "Auto-assign unassigned issues" and no Product Owner is available, use
|
|
5
|
+
Do not scan for unassigned work during a normal heartbeat. If you are assigned a routine-run issue titled like "Auto-assign unassigned issues" and no Product Owner is available, use `$AGENT_HOME/skills/auto-assign.md`, then summarize assignments on the routine issue and exit.
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
|
|
3
3
|
Primary assignment happens at backlog grooming — issues are assigned to the best-fit agent as they are created, not through this routine. This routine is a **safety net** that catches stragglers every 4 hours.
|
|
4
4
|
|
|
5
|
-
Do not scan for unassigned work during a normal heartbeat. When you are assigned a routine-run issue titled like "Auto-assign unassigned issues", use
|
|
5
|
+
Do not scan for unassigned work during a normal heartbeat. When you are assigned a routine-run issue titled like "Auto-assign unassigned issues", use `$AGENT_HOME/skills/auto-assign.md`, then summarize assignments on the routine issue and exit.
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
## Backlog Health Routine Fallback
|
|
2
2
|
|
|
3
|
-
Do not groom the backlog during a normal heartbeat unless that is your assigned issue. If you are assigned a routine-run issue titled like "Backlog grooming" and no Product Owner is available, use
|
|
3
|
+
Do not groom the backlog during a normal heartbeat unless that is your assigned issue. If you are assigned a routine-run issue titled like "Backlog grooming" and no Product Owner is available, use `$AGENT_HOME/skills/backlog-health.md`, then summarize generated/updated issues on the routine issue and exit.
|
|
@@ -9,6 +9,7 @@ On your heartbeat, after handling assignments:
|
|
|
9
9
|
1. Query unassigned issues: `GET /api/companies/{companyId}/issues?status=todo&unassigned=true`
|
|
10
10
|
2. If fewer than 1 unassigned issue remains AND the Product Owner hasn't acted recently:
|
|
11
11
|
- Create 1-2 high-priority issues from the roadmap to keep engineers unblocked
|
|
12
|
+
- For each top-level issue (no `parentId`), include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so it gets its own worktree; subissues set `parentId` and omit it. Never create a top-level issue without it (it would inherit your checked-out workspace and block parallel work).
|
|
12
13
|
- Attach `labelIds` — fetch available labels via `GET /api/companies/{companyId}/labels`. If no labels exist yet, create the defaults (see `backlog-health` skill for the label table) before creating issues.
|
|
13
14
|
- Comment on the issue tagging the Product Owner to take over backlog grooming
|
|
14
15
|
3. If the Product Owner is active and the backlog has 1+ issues, skip this step.
|
|
@@ -18,3 +19,4 @@ On your heartbeat, after handling assignments:
|
|
|
18
19
|
- This is a safety net, not your primary job. Let the PO own it.
|
|
19
20
|
- Only create issues when engineers would otherwise have nothing to work on.
|
|
20
21
|
- Keep it minimal — just enough to unblock, not a full grooming session.
|
|
22
|
+
- **Review handoff:** When moving an issue to `in_review`, always assign it to the reviewer. If the issue has an executionPolicy with review stages, Paperclip reassigns automatically. Otherwise PATCH `assigneeAgentId` to the reviewer before or at the same time as the status change.
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
## Backlog Health Routine
|
|
2
2
|
|
|
3
|
-
Do not groom the backlog during a normal heartbeat unless that is your assigned issue. When you are assigned a routine-run issue titled like "Backlog grooming" or "Backlog health", use
|
|
3
|
+
Do not groom the backlog during a normal heartbeat unless that is your assigned issue. When you are assigned a routine-run issue titled like "Backlog grooming" or "Backlog health", use `$AGENT_HOME/skills/backlog-health.md`, then summarize generated/updated issues on the routine issue and exit.
|
|
@@ -9,7 +9,7 @@ Goal → Roadmap → Issues → Assignment → Execution → Done
|
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
1. **Goal decomposition** — The backlog owner breaks the company goal into milestones, then milestones into actionable issues.
|
|
12
|
-
2. **Issue creation** — New issues enter the backlog via `POST /api/companies/{companyId}/issues` with `title`, `description`, `priority`, `projectId`, `goalId`, and `labelIds`. Top-level backlog issues must always include the active roadmap `projectId`.
|
|
12
|
+
2. **Issue creation** — New issues enter the backlog via `POST /api/companies/{companyId}/issues` with `title`, `description`, `priority`, `projectId`, `goalId`, and `labelIds`. Top-level backlog issues must always include the active roadmap `projectId`. They must also set workspace isolation explicitly — see **Workspace Isolation** below.
|
|
13
13
|
3. **Pipeline health** — The backlog owner monitors the ready assigned queue. When fewer than about 8 actionable ready issues remain across the active delivery roles, the next small batch is generated from the roadmap.
|
|
14
14
|
4. **Assignment** — Issues are assigned at creation to the best-fit owner. Engineering-ready issues go directly to the Software Engineer (or matching delivery role) so assignment wakeups start work immediately. Leave an issue unassigned only when no suitable owner exists.
|
|
15
15
|
5. **Execution** — Agents check out assigned issues, work them, and hand off deliberately for review or completion.
|
|
@@ -28,6 +28,39 @@ Every issue should be:
|
|
|
28
28
|
|
|
29
29
|
Write acceptance criteria in the issue description. Engineers use these to validate their work before marking done. Keep them concrete and testable.
|
|
30
30
|
|
|
31
|
+
## Workspace Isolation (required at creation)
|
|
32
|
+
|
|
33
|
+
Every issue runs in a git execution workspace (worktree/branch). To let issues run in
|
|
34
|
+
parallel without colliding in the same worktree, you must declare the workspace intent
|
|
35
|
+
**when you create the issue** — otherwise the issue silently adopts the workspace of
|
|
36
|
+
whatever issue you currently have checked out, which serializes work and corrupts branch
|
|
37
|
+
state.
|
|
38
|
+
|
|
39
|
+
- **Top-level issue** (independent work, no `parentId`): always send
|
|
40
|
+
`"executionWorkspaceSettings": { "mode": "isolated_workspace" }` in the create body. This
|
|
41
|
+
gives the issue its own worktree and branch.
|
|
42
|
+
- **Sub-issue** (part of a larger parent task): set `"parentId": "<parent-issue-id>"` and
|
|
43
|
+
do **not** send `executionWorkspaceSettings`. The sub-issue deliberately reuses the
|
|
44
|
+
parent's workspace (the parent cannot be completed/cleaned up while its sub-issues are
|
|
45
|
+
still open, so sharing is safe and intended).
|
|
46
|
+
|
|
47
|
+
**Never** create a top-level issue without `executionWorkspaceSettings`. Doing so makes it
|
|
48
|
+
inherit the creator's currently checked-out workspace and blocks parallel execution.
|
|
49
|
+
|
|
50
|
+
Example top-level create body:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"title": "Build campaign onboarding wizard",
|
|
55
|
+
"description": "...",
|
|
56
|
+
"priority": "high",
|
|
57
|
+
"projectId": "<roadmap-project-id>",
|
|
58
|
+
"goalId": "<goal-id>",
|
|
59
|
+
"labelIds": ["<label-id>"],
|
|
60
|
+
"executionWorkspaceSettings": { "mode": "isolated_workspace" }
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
31
64
|
## Sources of Issues
|
|
32
65
|
|
|
33
66
|
Issues can enter the backlog from multiple sources:
|
|
@@ -60,3 +93,7 @@ Re-prioritize when milestones shift or new information arrives. Don't let low-pr
|
|
|
60
93
|
- The backlog owner coordinates with the CEO on strategic priorities when unclear.
|
|
61
94
|
- If the goal is fully decomposed and all issues are done or in progress, report completion to the CEO rather than inventing new work.
|
|
62
95
|
- When multiple agents create issues (e.g., from user-testing findings), the backlog owner reviews and re-prioritizes as needed.
|
|
96
|
+
|
|
97
|
+
## Review Handoff
|
|
98
|
+
|
|
99
|
+
When an issue is ready for review (moving to `in_review`), it must be assigned to the reviewer. If an executionPolicy with review stages is configured, Paperclip reassigns automatically. Otherwise, the person moving the issue must PATCH `assigneeAgentId` to the reviewer. An issue in `in_review` that is still assigned to the original implementer will stall — no one picks it up. Always reassign on review handoff.
|
|
@@ -39,7 +39,7 @@ _Summary of current backlog health. Update on each heartbeat cycle._
|
|
|
39
39
|
- **Ready assigned issues:** _(count by owner)_
|
|
40
40
|
- **Unassigned todo issues:** _(count; should normally be 0 except items without a suitable owner)_
|
|
41
41
|
- **In-progress issues:** _(count)_
|
|
42
|
-
- **Health:** _(healthy / thin / empty / bloated — see backlog-process.md)_
|
|
42
|
+
- **Health:** _(healthy / thin / empty / bloated — see docs/backlog-process.md)_
|
|
43
43
|
|
|
44
44
|
## Decisions Log
|
|
45
45
|
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"title": "Backlog grooming",
|
|
25
25
|
"description": "Routine-run checklist: inspect roadmap/backlog health, ensure at least 8 actionable ready issues exist, create scoped issues (around 3-6 per pass) and assign each to its best-fit agent when capacity is low, link artifacts/goals/projects, summarize changes on the routine issue, then exit.",
|
|
26
26
|
"assignTo": "capability:backlog-health",
|
|
27
|
-
"schedule": "0 */
|
|
27
|
+
"schedule": "0 */2 * * *",
|
|
28
28
|
"priority": "medium",
|
|
29
29
|
"concurrencyPolicy": "skip_if_active"
|
|
30
30
|
}
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
A good backlog health pass:
|
|
4
4
|
|
|
5
5
|
- Every issue created is INVEST-shaped: has a clear title, written acceptance criteria in the description, a priority, a label, and is attached to the correct `projectId` and `goalId` — never a top-level issue with `projectId: null`.
|
|
6
|
+
- Every issue declares workspace isolation explicitly: top-level issues (no `parentId`) carry `"executionWorkspaceSettings": { "mode": "isolated_workspace" }`; subissues set `parentId` and omit it. A top-level issue created without it is not done — it would inherit the creator's checked-out workspace and block parallel execution.
|
|
6
7
|
- The team keeps a healthy queue of ready, **assigned** work (toward the grooming target of ~8 actionable ready issues); when the assigned ready queue runs low, new issues are created **and assigned** from the roadmap so no agent goes idle between grooming cycles, and the action is recorded in daily notes. Issues are assigned at creation — do not stockpile a pool of unassigned issues.
|
|
8
|
+
- Review handoff: when moving an issue to `in_review`, always reassign it to the reviewer. Without reassignment, `in_review` issues stall with the implementer still assigned.
|
|
7
9
|
|
|
8
10
|
Not done:
|
|
9
11
|
|
|
@@ -30,10 +30,11 @@ Add additional labels if the roadmap calls for them (e.g., `docs`, `design`, `se
|
|
|
30
30
|
3. Query existing issues for the relevant project/goal and avoid duplicates.
|
|
31
31
|
4. If the backlog is thin or unclear, create around 3-6 small actionable issues via `POST /api/companies/{companyId}/issues`.
|
|
32
32
|
5. Each issue must include: `title`, acceptance-oriented `description`, `priority`, `projectId`, `goalId` when known, and `labelIds`.
|
|
33
|
-
6.
|
|
34
|
-
7.
|
|
35
|
-
8.
|
|
36
|
-
9.
|
|
33
|
+
6. Set workspace isolation explicitly on every issue you create (see Rules): top-level issues send `"executionWorkspaceSettings": { "mode": "isolated_workspace" }`; sub-issues set `parentId` and omit it.
|
|
34
|
+
7. Use `blockedByIssueIds` for real dependencies instead of free-text blockers.
|
|
35
|
+
8. Assign each issue to the best-fit available agent as you create it — engineer-actionable work with clear acceptance criteria goes to the Software Engineer (or the matching role). Direct push-assignment is the primary dispatch path; the assigned queue is the buffer, so do **not** stockpile a pool of unassigned ready work. Leave an issue unassigned only when no suitable owner exists — the low-frequency auto-assign safety net will catch those.
|
|
36
|
+
9. Record generated issue ids and rationale in the routine issue comment; use issue documents for long plans.
|
|
37
|
+
10. Mark the routine-run issue done when complete.
|
|
37
38
|
|
|
38
39
|
## Rules
|
|
39
40
|
|
|
@@ -41,6 +42,8 @@ Add additional labels if the roadmap calls for them (e.g., `docs`, `design`, `se
|
|
|
41
42
|
- Do not create top-level backlog issues with `projectId: null` when a project exists.
|
|
42
43
|
- Keep issues small and actionable. Each should be completable, tested, and reviewed independently.
|
|
43
44
|
- Split into subissues only when each child can be completed independently; avoid splitting tightly coupled implementation across sibling subissues.
|
|
45
|
+
- **Set workspace isolation explicitly at creation.** Top-level issues (no `parentId`) must send `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree/branch. Sub-issues set `parentId` and omit `executionWorkspaceSettings` so they reuse the parent's workspace. Never create a top-level issue without it — otherwise it inherits the workspace of whatever issue you currently have checked out and blocks parallel work.
|
|
44
46
|
- Always attach at least one label to every issue you create.
|
|
45
47
|
- If the goal is fully decomposed into issues, do not create more. Report status and next review trigger to the CEO/Product Owner.
|
|
46
48
|
- Work products such as roadmap drafts or decomposition tables belong in issue documents/artifacts, not only comments.
|
|
49
|
+
- **Review handoff:** When moving an issue to `in_review`, always assign it to the reviewer. If the issue has an executionPolicy with review stages, Paperclip reassigns automatically. If there is no executionPolicy, PATCH the issue's `assigneeAgentId` to the reviewer before or at the same time as the status change. An issue in `in_review` that is still assigned to the original implementer will stall — no one picks it up. Always reassign on review handoff.
|
|
@@ -9,11 +9,11 @@ The UI Designer and CMO both own brand identity above you. You are the last-reso
|
|
|
9
9
|
- Choose a neutral color palette (1 primary, 1 accent, 1 neutral)
|
|
10
10
|
- Pick a safe, widely available font pairing (e.g., Inter + system serif)
|
|
11
11
|
- Document in `docs/BRAND-IDENTITY.md` and mark all choices as **provisional**
|
|
12
|
-
- Create an issue for the designer or CMO to review and expand the brand guidelines
|
|
13
|
-
2. If a designer or CMO is active, skip this entirely.
|
|
12
|
+
- Create an issue for the ui-designer or CMO to review and expand the brand guidelines
|
|
13
|
+
2. If a ui-designer or CMO is active, skip this entirely.
|
|
14
14
|
|
|
15
15
|
## Rules
|
|
16
16
|
|
|
17
17
|
- This is a safety net. Choose sensible defaults, not optimal solutions.
|
|
18
|
-
- Mark everything as provisional — the designer owns the final brand.
|
|
19
|
-
- Let the designer or CMO refine and expand the actual brand identity.
|
|
18
|
+
- Mark everything as provisional — the ui-designer owns the final brand.
|
|
19
|
+
- Let the ui-designer or CMO refine and expand the actual brand identity.
|
|
@@ -15,7 +15,7 @@ You own the company's visual identity and brand guidelines. Define a cohesive br
|
|
|
15
15
|
- **Iconography**: Style, stroke weight, grid alignment
|
|
16
16
|
- **Tone of voice**: Communication style, vocabulary, personality
|
|
17
17
|
3. Document everything in `docs/BRAND-IDENTITY.md`:
|
|
18
|
-
- Use
|
|
18
|
+
- Use `docs/brand-identity-template.md` as a starting point
|
|
19
19
|
- Fill in all sections with concrete values and rationale
|
|
20
20
|
- Include visual examples or references where possible
|
|
21
21
|
4. Create initial design tokens if a tech stack exists:
|
|
@@ -7,7 +7,7 @@ The DevOps engineer primarily owns CI/CD pipelines. You are the fallback — ste
|
|
|
7
7
|
1. If no CI workflow exists and DevOps hasn't started:
|
|
8
8
|
- Create a basic CI workflow: lint + test on PRs, build on push to the default branch
|
|
9
9
|
- Use standard caching and pinned action versions
|
|
10
|
-
- Document the setup in `docs/CI-CD.md`
|
|
10
|
+
- Document the setup in `docs/CI-CD.md` and mark the setup as **provisional** — a devops agent should review and complete the production configuration.
|
|
11
11
|
- Mark the pipeline as **provisional** — it needs DevOps review for CD, caching optimization, and security hardening
|
|
12
12
|
2. If DevOps is active, skip this entirely.
|
|
13
13
|
|
|
@@ -16,3 +16,4 @@ The DevOps engineer primarily owns CI/CD pipelines. You are the fallback — ste
|
|
|
16
16
|
- This is a safety net. Set up the basics — lint, test, build.
|
|
17
17
|
- Skip CD (deployment) — that requires infrastructure knowledge best left to DevOps.
|
|
18
18
|
- Let DevOps own pipeline optimization, deployment, and ongoing maintenance.
|
|
19
|
+
- Reference `docs/CI-CD.md` for all configuration details so the devops agent can pick up where you left off.
|
|
@@ -13,8 +13,19 @@ You manage continuous integration and deployment pipelines. Follow the conventio
|
|
|
13
13
|
- Trigger on merge to the default branch
|
|
14
14
|
- Deploy to the target environment
|
|
15
15
|
- Run smoke tests after deployment
|
|
16
|
-
4.
|
|
17
|
-
5. Document the
|
|
16
|
+
4. Pin every third-party action to a full commit SHA (`uses: actions/checkout@<sha>`, not `@v4`). SHA pinning prevents supply-chain attacks from a compromised action version tag. Record the pinned SHAs in `docs/CI-CD.md` → *Pinned Action SHAs*.
|
|
17
|
+
5. Document the rollback procedure in `docs/CI-CD.md` → *Rollback*: how to revert a failed deploy (e.g., `git revert` + redeploy, or infra rollback command), how to verify the rollback succeeded, and the recovery SLA. A pipeline with no documented rollback path is not done.
|
|
18
|
+
6. Add status badges to the project README
|
|
19
|
+
7. Document the full pipeline in `docs/CI-CD.md`
|
|
20
|
+
|
|
21
|
+
## Ongoing Health Checks
|
|
22
|
+
|
|
23
|
+
When assigned a "CI pipeline health check" routine-run issue:
|
|
24
|
+
|
|
25
|
+
1. Review the last 7 days of pipeline runs. Check: average duration trend (flag if >20% slower), flake rate per job (flag jobs failing >5% of runs), failure rate on the default branch.
|
|
26
|
+
2. If the default branch is red (failing), this is P0 — do not mark the routine done until fixed or escalated.
|
|
27
|
+
3. Check for unpinned action versions added since last check; pin them.
|
|
28
|
+
4. Leave a summary comment on the issue (run counts, any flaky/slow jobs, any fixes applied), then mark the routine issue done.
|
|
18
29
|
|
|
19
30
|
## Rules
|
|
20
31
|
|
|
@@ -17,3 +17,13 @@ The Engineer primarily owns codebase auditing and health. You are the fallback
|
|
|
17
17
|
- Skip deep code analysis — that requires engineering expertise.
|
|
18
18
|
- Don't create cleanup issues — leave that to the Engineer's thorough audit.
|
|
19
19
|
- Let the Engineer own the ongoing health checks and refactoring work.
|
|
20
|
+
|
|
21
|
+
## Health Check Refresh (follow-up runs)
|
|
22
|
+
|
|
23
|
+
When `docs/CODEBASE-AUDIT.md` already exists (a prior audit was completed) and you are assigned a follow-up health check:
|
|
24
|
+
|
|
25
|
+
1. Read the existing `docs/CODEBASE-AUDIT.md`.
|
|
26
|
+
2. Run a quick surface scan: `find . -name "*.js" -o -name "*.ts" | head -30` to sense if new files or directories have appeared since the last audit date.
|
|
27
|
+
3. Note any obviously new areas (new top-level directories, new dependency groups) not present in the existing document.
|
|
28
|
+
4. Add a dated `## Health Check — <date>` section to `docs/CODEBASE-AUDIT.md` listing: files reviewed, new areas identified, and a note that deep analysis was not performed (this is a CEO fallback — escalate to an engineer for full re-audit if significant new areas were found).
|
|
29
|
+
5. Mark the issue done.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Skill: Competitive Tracking (Product Owner Fallback)
|
|
2
|
+
|
|
3
|
+
A specialist in competitive intelligence (Customer Success or CMO) is handling primary competitive tracking. Your role is to surface product-roadmap implications from their findings and ensure competitor insights feed into the backlog.
|
|
4
|
+
|
|
5
|
+
## Steps
|
|
6
|
+
|
|
7
|
+
1. Read `docs/COMPETITIVE-INTEL.md` if it exists. If it does not, check back after the primary competitive-tracking agent has completed their initial audit.
|
|
8
|
+
2. Review recent competitor changes for product-roadmap implications:
|
|
9
|
+
- New features from competitors that close a gap with your product → create a backlog issue "Evaluate [feature] parity with [competitor]" with the relevant section from COMPETITIVE-INTEL.md.
|
|
10
|
+
- Competitor pricing or positioning shifts that affect your value proposition → add a comment to the relevant goal or create an issue for CEO/CMO review.
|
|
11
|
+
3. Update the product backlog with any priority changes driven by competitive pressure (coordinate with CEO before reprioritising existing high-priority items).
|
|
12
|
+
4. Add a `## Product Implications` section to `docs/COMPETITIVE-INTEL.md` if it doesn't already exist, noting your recommendations.
|
|
13
|
+
5. Mark the issue done.
|
|
14
|
+
|
|
15
|
+
## Rules
|
|
16
|
+
|
|
17
|
+
- Do not duplicate the competitor research already done by the primary agent — read their output and add product perspective.
|
|
18
|
+
- If COMPETITIVE-INTEL.md does not exist yet, do not create it — wait for the primary agent. Leave an issue comment noting the dependency and mark done if the issue was routine-triggered.
|
|
19
|
+
- Coordinate with CMO or Customer Success before making any public-facing positioning changes.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
## Competitive Tracking — Done Bar
|
|
2
|
+
|
|
3
|
+
**Done:**
|
|
4
|
+
- `docs/COMPETITIVE-INTEL.md` exists with a profile for each tracked competitor that includes: product positioning, key differentiators, pricing model (if public), and a specific takeaway for your product ("what this means for us").
|
|
5
|
+
- Differentiation opportunities are explicitly named — not just competitor feature lists, but concrete gaps or advantages your product has or could develop.
|
|
6
|
+
- Each competitor profile was updated within the last tracking cycle (not stale from a previous run).
|
|
7
|
+
|
|
8
|
+
**Not done:**
|
|
9
|
+
- Competitor profiles are feature lists with no positioning takeaway.
|
|
10
|
+
- "Differentiation opportunities" section is absent or contains only generic observations ("we should improve UX").
|
|
11
|
+
- `docs/COMPETITIVE-INTEL.md` was not updated this run (routine ran but no document was touched).
|
|
@@ -16,7 +16,7 @@ You own competitive intelligence. This is a living analysis — profiles evolve
|
|
|
16
16
|
- **Gaps and opportunities**: Where competitors are weak and we can win
|
|
17
17
|
- **Threats**: Where competitors are strong and we need to defend
|
|
18
18
|
3. Create follow-up issues for strategic decisions informed by competitive insights:
|
|
19
|
-
- `POST /api/companies/{companyId}/issues` with specific recommendations. Include the active `projectId` (and `goalId` / `parentId` when applicable).
|
|
19
|
+
- `POST /api/companies/{companyId}/issues` with specific recommendations. Include the active `projectId` (and `goalId` / `parentId` when applicable). For top-level issues (no `parentId`), also include `"executionWorkspaceSettings": { "mode": "isolated_workspace" }` so each gets its own worktree; subissues set `parentId` and omit it.
|
|
20
20
|
4. Record summary in your daily notes
|
|
21
21
|
|
|
22
22
|
## Rules
|
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"assignTo": "capability:dependency-audit",
|
|
22
22
|
"description": "Audit all project dependencies for outdated versions, known vulnerabilities, and deprecated packages. Document findings and create a prioritized upgrade plan."
|
|
23
23
|
}
|
|
24
|
+
],
|
|
25
|
+
"routines": [
|
|
26
|
+
{
|
|
27
|
+
"name": "Dependency audit",
|
|
28
|
+
"description": "Scan for new vulnerabilities and outdated packages, apply safe patch updates.",
|
|
29
|
+
"assignTo": "capability:dependency-audit",
|
|
30
|
+
"schedule": "0 2 * * 1",
|
|
31
|
+
"concurrencyPolicy": "forbid"
|
|
32
|
+
}
|
|
24
33
|
]
|
|
25
34
|
}
|
|
@@ -27,12 +27,15 @@ You are responsible for keeping the project's dependencies healthy, secure, and
|
|
|
27
27
|
6. **Execute safe upgrades** — Apply patch and minor updates directly when tests pass.
|
|
28
28
|
7. **Create issues** for major version upgrades or migrations that require dedicated work.
|
|
29
29
|
|
|
30
|
-
## Ongoing
|
|
30
|
+
## Ongoing Audits (Routine-Triggered)
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
When assigned a "Dependency audit" routine-run issue:
|
|
33
|
+
|
|
34
|
+
1. Run the vulnerability scan: `npm audit --json` (or equivalent for the project's package manager). Flag any new Critical or High CVEs not present in the last audit.
|
|
35
|
+
2. Check for newly outdated dependencies: compare current versions against the latest. Flag anything more than one major version behind.
|
|
36
|
+
3. Apply safe patch updates (semver patch-only, no breaking changes): update, run the test suite, commit if green.
|
|
37
|
+
4. Update `docs/DEPENDENCY-AUDIT.md` with the new scan date, any new findings, and any updates applied.
|
|
38
|
+
5. Mark the routine issue done. If Critical CVEs were found that cannot be patched, create a separate high-priority issue for each and escalate to CEO.
|
|
36
39
|
|
|
37
40
|
## Rules
|
|
38
41
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
## Project Documentation — Done Bar
|
|
2
|
+
|
|
3
|
+
**Done:**
|
|
4
|
+
- All documentation targets specified in the issue have been created or updated.
|
|
5
|
+
- Setup instructions have been verified: every command listed in README.md or setup guides has been run at least once and produces the expected result.
|
|
6
|
+
- API documentation matches the current implementation — no documented endpoints or parameters that no longer exist, no undocumented endpoints that do.
|
|
7
|
+
- No content is duplicated across files — each fact appears in exactly one place; other files reference it rather than copying.
|
|
8
|
+
- Internal links (cross-references between docs) are valid — no broken anchors or references to non-existent files.
|
|
9
|
+
|
|
10
|
+
**Not done:**
|
|
11
|
+
- Setup instructions are untested ("this should work" documentation).
|
|
12
|
+
- API docs were not updated after a breaking change.
|
|
13
|
+
- A section is marked "TODO" or "coming soon" without a follow-up issue.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
## Game Design — Done Bar
|
|
2
|
+
|
|
3
|
+
**Done:**
|
|
4
|
+
- `docs/GDD.md` (Game Design Document) exists and covers all required sections: Overview, Core Loop, Game Mechanics, Progression System, Technical Constraints, and Art Direction.
|
|
5
|
+
- Tuning parameters are externalized: every balance-critical value (player speed, damage, cooldown, score multipliers) is defined as a named parameter with its default value and valid range documented in the GDD (format: `parameter_name: default (range: min–max)`). No magic numbers hardcoded in engine scripts without a GDD reference.
|
|
6
|
+
- A playtest loop is defined: the GDD specifies at minimum one measurable success criterion per core loop iteration (e.g., "average session length > 8 minutes", "level 1 completion rate > 70%").
|
|
7
|
+
- Art and audio direction are present: the GDD includes a visual style reference (mood board description or reference images) and an audio/music direction note.
|
|
8
|
+
|
|
9
|
+
**Not done:**
|
|
10
|
+
- Tuning values are hardcoded in source files with no GDD parameter reference.
|
|
11
|
+
- The core game loop has no session-level layer (the player has no reason to return after one play session).
|
|
12
|
+
- Art or audio direction is absent ("TBD" does not count).
|
|
13
|
+
- The GDD exists but is a skeleton with no actual design decisions filled in.
|