@starlein/paperclip-plugin-company-wizard 0.2.1
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/LICENSE +21 -0
- package/README.md +748 -0
- package/dist/manifest.js +91 -0
- package/dist/manifest.js.map +7 -0
- package/dist/ui/index.css +1647 -0
- package/dist/ui/index.css.map +7 -0
- package/dist/ui/index.js +6738 -0
- package/dist/ui/index.js.map +7 -0
- package/dist/worker.js +8247 -0
- package/dist/worker.js.map +7 -0
- package/package.json +73 -0
- package/templates/ai-wizard/config-format.md +21 -0
- package/templates/ai-wizard/interview-system.md +67 -0
- package/templates/ai-wizard/messages.json +6 -0
- package/templates/ai-wizard/single-shot-system.md +42 -0
- package/templates/bootstrap-instructions.md +30 -0
- package/templates/modules/accessibility/agents/engineer/skills/accessibility-audit.fallback.md +18 -0
- package/templates/modules/accessibility/agents/ui-designer/skills/accessibility-audit.fallback.md +18 -0
- package/templates/modules/accessibility/module.meta.json +22 -0
- package/templates/modules/accessibility/skills/accessibility-audit.md +27 -0
- package/templates/modules/architecture-plan/agents/ceo/skills/architecture-plan.fallback.md +16 -0
- package/templates/modules/architecture-plan/agents/engineer/skills/design-system.fallback.md +17 -0
- package/templates/modules/architecture-plan/agents/ui-designer/skills/architecture-plan.md +19 -0
- package/templates/modules/architecture-plan/agents/ui-designer/skills/design-system.md +24 -0
- package/templates/modules/architecture-plan/docs/architecture-template.md +38 -0
- package/templates/modules/architecture-plan/docs/design-system-template.md +61 -0
- package/templates/modules/architecture-plan/module.meta.json +37 -0
- package/templates/modules/architecture-plan/skills/architecture-plan.md +23 -0
- package/templates/modules/auto-assign/README.md +23 -0
- package/templates/modules/auto-assign/agents/ceo/heartbeat-section.md +9 -0
- package/templates/modules/auto-assign/agents/ceo/skills/auto-assign.fallback.md +18 -0
- package/templates/modules/auto-assign/agents/product-owner/heartbeat-section.md +10 -0
- package/templates/modules/auto-assign/module.meta.json +27 -0
- package/templates/modules/auto-assign/skills/auto-assign.md +23 -0
- package/templates/modules/backlog/README.md +26 -0
- package/templates/modules/backlog/agents/ceo/heartbeat-section.md +10 -0
- package/templates/modules/backlog/agents/ceo/skills/backlog-health.fallback.md +20 -0
- package/templates/modules/backlog/agents/product-owner/heartbeat-section.md +15 -0
- package/templates/modules/backlog/docs/backlog-process.md +62 -0
- package/templates/modules/backlog/docs/backlog-template.md +53 -0
- package/templates/modules/backlog/module.meta.json +31 -0
- package/templates/modules/backlog/skills/backlog-health.md +47 -0
- package/templates/modules/brand-identity/agents/ceo/skills/brand-identity.fallback.md +19 -0
- package/templates/modules/brand-identity/agents/cmo/skills/brand-identity.fallback.md +19 -0
- package/templates/modules/brand-identity/docs/brand-identity-template.md +43 -0
- package/templates/modules/brand-identity/module.meta.json +22 -0
- package/templates/modules/brand-identity/skills/brand-identity.md +30 -0
- package/templates/modules/build-api/module.meta.json +118 -0
- package/templates/modules/build-api/skills/api-design.md +43 -0
- package/templates/modules/ci-cd/agents/devops/skills/ci-cd.md +28 -0
- package/templates/modules/ci-cd/agents/engineer/skills/ci-cd.fallback.md +18 -0
- package/templates/modules/ci-cd/docs/ci-cd-template.md +42 -0
- package/templates/modules/ci-cd/module.meta.json +105 -0
- package/templates/modules/ci-cd/skills/ci-cd.md +26 -0
- package/templates/modules/codebase-onboarding/agents/ceo/skills/codebase-audit.fallback.md +19 -0
- package/templates/modules/codebase-onboarding/module.meta.json +24 -0
- package/templates/modules/codebase-onboarding/skills/codebase-audit.md +45 -0
- package/templates/modules/competitive-intel/agents/ceo/skills/competitive-tracking.fallback.md +17 -0
- package/templates/modules/competitive-intel/agents/cmo/skills/competitive-tracking.fallback.md +17 -0
- package/templates/modules/competitive-intel/agents/customer-success/skills/competitive-tracking.md +25 -0
- package/templates/modules/competitive-intel/module.meta.json +23 -0
- package/templates/modules/competitive-intel/skills/competitive-tracking.md +27 -0
- package/templates/modules/dependency-management/agents/engineer/skills/dependency-audit.fallback.md +18 -0
- package/templates/modules/dependency-management/module.meta.json +25 -0
- package/templates/modules/dependency-management/skills/dependency-audit.md +43 -0
- package/templates/modules/documentation/agents/ceo/skills/project-docs.fallback.md +16 -0
- package/templates/modules/documentation/agents/engineer/skills/project-docs.fallback.md +16 -0
- package/templates/modules/documentation/module.meta.json +22 -0
- package/templates/modules/documentation/skills/project-docs.md +25 -0
- package/templates/modules/game-design/agents/ceo/skills/game-design.fallback.md +17 -0
- package/templates/modules/game-design/agents/game-designer/skills/game-design.md +51 -0
- package/templates/modules/game-design/docs/engine-phaser.md +310 -0
- package/templates/modules/game-design/docs/engine-pixijs.md +289 -0
- package/templates/modules/game-design/docs/engine-threejs.md +304 -0
- package/templates/modules/game-design/docs/gdd-template.md +72 -0
- package/templates/modules/game-design/module.meta.json +22 -0
- package/templates/modules/game-design/skills/game-design.md +41 -0
- package/templates/modules/github-repo/README.md +23 -0
- package/templates/modules/github-repo/agents/engineer/skills/git-workflow.md +23 -0
- package/templates/modules/github-repo/docs/git-workflow.md +50 -0
- package/templates/modules/github-repo/module.meta.json +12 -0
- package/templates/modules/hiring-review/agents/ceo/skills/hiring-review.fallback.md +17 -0
- package/templates/modules/hiring-review/module.meta.json +21 -0
- package/templates/modules/hiring-review/skills/hiring-review.md +24 -0
- package/templates/modules/launch-mvp/module.meta.json +86 -0
- package/templates/modules/market-analysis/agents/ceo/skills/market-analysis.fallback.md +17 -0
- package/templates/modules/market-analysis/agents/cmo/skills/market-analysis.fallback.md +19 -0
- package/templates/modules/market-analysis/agents/product-owner/skills/market-analysis.fallback.md +18 -0
- package/templates/modules/market-analysis/agents/ux-researcher/skills/market-analysis.md +23 -0
- package/templates/modules/market-analysis/docs/market-analysis-template.md +32 -0
- package/templates/modules/market-analysis/module.meta.json +23 -0
- package/templates/modules/market-analysis/skills/market-analysis.md +21 -0
- package/templates/modules/monitoring/agents/devops/skills/monitoring.md +23 -0
- package/templates/modules/monitoring/agents/engineer/skills/monitoring.fallback.md +18 -0
- package/templates/modules/monitoring/docs/monitoring-template.md +46 -0
- package/templates/modules/monitoring/module.meta.json +24 -0
- package/templates/modules/monitoring/skills/monitoring.md +20 -0
- package/templates/modules/pr-review/README.md +43 -0
- package/templates/modules/pr-review/agents/code-reviewer/skills/code-review.md +29 -0
- package/templates/modules/pr-review/agents/devops/skills/infra-review.md +29 -0
- package/templates/modules/pr-review/agents/engineer/skills/pr-workflow.md +24 -0
- package/templates/modules/pr-review/agents/product-owner/skills/product-review.md +27 -0
- package/templates/modules/pr-review/agents/qa/skills/qa-review.md +29 -0
- package/templates/modules/pr-review/agents/ui-designer/skills/design-review.md +29 -0
- package/templates/modules/pr-review/agents/ux-researcher/skills/ux-review.md +29 -0
- package/templates/modules/pr-review/docs/pr-conventions.md +78 -0
- package/templates/modules/pr-review/module.meta.json +24 -0
- package/templates/modules/release-management/agents/engineer/skills/release-process.fallback.md +18 -0
- package/templates/modules/release-management/module.meta.json +25 -0
- package/templates/modules/release-management/skills/release-process.md +45 -0
- package/templates/modules/security-audit/agents/devops/skills/security-review.fallback.md +17 -0
- package/templates/modules/security-audit/agents/devops/skills/threat-model.fallback.md +17 -0
- package/templates/modules/security-audit/agents/engineer/skills/security-review.fallback.md +17 -0
- package/templates/modules/security-audit/agents/engineer/skills/threat-model.fallback.md +17 -0
- package/templates/modules/security-audit/module.meta.json +36 -0
- package/templates/modules/security-audit/skills/security-review.md +25 -0
- package/templates/modules/security-audit/skills/threat-model.md +22 -0
- package/templates/modules/stall-detection/README.md +27 -0
- package/templates/modules/stall-detection/agents/ceo/heartbeat-section.md +12 -0
- package/templates/modules/stall-detection/agents/ceo/skills/stall-detection.md +21 -0
- package/templates/modules/stall-detection/module.meta.json +15 -0
- package/templates/modules/tech-stack/agents/ceo/skills/tech-stack.fallback.md +16 -0
- package/templates/modules/tech-stack/docs/tech-stack-template.md +28 -0
- package/templates/modules/tech-stack/module.meta.json +21 -0
- package/templates/modules/tech-stack/skills/tech-stack.md +25 -0
- package/templates/modules/triage/agents/ceo/skills/issue-triage.fallback.md +19 -0
- package/templates/modules/triage/module.meta.json +25 -0
- package/templates/modules/triage/skills/issue-triage.md +42 -0
- package/templates/modules/user-testing/agents/ceo/skills/user-testing.fallback.md +17 -0
- package/templates/modules/user-testing/agents/product-owner/skills/user-testing.fallback.md +17 -0
- package/templates/modules/user-testing/agents/qa/skills/user-testing.md +30 -0
- package/templates/modules/user-testing/agents/ux-researcher/skills/user-testing.fallback.md +18 -0
- package/templates/modules/user-testing/docs/user-testing-template.md +37 -0
- package/templates/modules/user-testing/module.meta.json +23 -0
- package/templates/modules/user-testing/skills/user-testing.md +27 -0
- package/templates/modules/vision-workshop/agents/ceo/skills/vision-workshop.md +23 -0
- package/templates/modules/vision-workshop/agents/ux-researcher/skills/vision-workshop.md +19 -0
- package/templates/modules/vision-workshop/docs/vision-template.md +28 -0
- package/templates/modules/vision-workshop/module.meta.json +12 -0
- package/templates/modules/website-relaunch/agents/ui-designer/skills/site-audit.md +65 -0
- package/templates/modules/website-relaunch/module.meta.json +168 -0
- package/templates/modules/website-relaunch/skills/design-ingestion.md +111 -0
- package/templates/modules/website-relaunch/skills/site-audit.md +54 -0
- package/templates/presets/build-api/preset.meta.json +16 -0
- package/templates/presets/build-game/preset.meta.json +150 -0
- package/templates/presets/content/preset.meta.json +20 -0
- package/templates/presets/fast/preset.meta.json +16 -0
- package/templates/presets/full/preset.meta.json +22 -0
- package/templates/presets/gtm/preset.meta.json +21 -0
- package/templates/presets/launch-mvp/preset.meta.json +17 -0
- package/templates/presets/launch-pack/preset.meta.json +25 -0
- package/templates/presets/quality/preset.meta.json +17 -0
- package/templates/presets/rad/preset.meta.json +19 -0
- package/templates/presets/repo-maintenance/preset.meta.json +104 -0
- package/templates/presets/research/preset.meta.json +13 -0
- package/templates/presets/secure/preset.meta.json +22 -0
- package/templates/presets/startup/preset.meta.json +19 -0
- package/templates/presets/website-relaunch/preset.meta.json +18 -0
- package/templates/roles/audio-designer/AGENTS.md +29 -0
- package/templates/roles/audio-designer/HEARTBEAT.md +37 -0
- package/templates/roles/audio-designer/SOUL.md +17 -0
- package/templates/roles/audio-designer/TOOLS.md +3 -0
- package/templates/roles/audio-designer/role.meta.json +14 -0
- package/templates/roles/ceo/AGENTS.md +28 -0
- package/templates/roles/ceo/HEARTBEAT.md +75 -0
- package/templates/roles/ceo/SOUL.md +33 -0
- package/templates/roles/ceo/TOOLS.md +3 -0
- package/templates/roles/ceo/role.meta.json +14 -0
- package/templates/roles/cfo/AGENTS.md +31 -0
- package/templates/roles/cfo/HEARTBEAT.md +37 -0
- package/templates/roles/cfo/SOUL.md +17 -0
- package/templates/roles/cfo/TOOLS.md +3 -0
- package/templates/roles/cfo/role.meta.json +17 -0
- package/templates/roles/cmo/AGENTS.md +31 -0
- package/templates/roles/cmo/HEARTBEAT.md +37 -0
- package/templates/roles/cmo/SOUL.md +17 -0
- package/templates/roles/cmo/TOOLS.md +3 -0
- package/templates/roles/cmo/role.meta.json +17 -0
- package/templates/roles/code-reviewer/AGENTS.md +42 -0
- package/templates/roles/code-reviewer/HEARTBEAT.md +33 -0
- package/templates/roles/code-reviewer/SOUL.md +18 -0
- package/templates/roles/code-reviewer/TOOLS.md +3 -0
- package/templates/roles/code-reviewer/role.meta.json +12 -0
- package/templates/roles/cto/AGENTS.md +30 -0
- package/templates/roles/cto/HEARTBEAT.md +45 -0
- package/templates/roles/cto/SOUL.md +25 -0
- package/templates/roles/cto/TOOLS.md +3 -0
- package/templates/roles/cto/role.meta.json +18 -0
- package/templates/roles/customer-success/AGENTS.md +42 -0
- package/templates/roles/customer-success/HEARTBEAT.md +33 -0
- package/templates/roles/customer-success/SOUL.md +17 -0
- package/templates/roles/customer-success/TOOLS.md +3 -0
- package/templates/roles/customer-success/role.meta.json +17 -0
- package/templates/roles/devops/AGENTS.md +31 -0
- package/templates/roles/devops/HEARTBEAT.md +42 -0
- package/templates/roles/devops/SOUL.md +17 -0
- package/templates/roles/devops/TOOLS.md +3 -0
- package/templates/roles/devops/role.meta.json +17 -0
- package/templates/roles/engineer/AGENTS.md +29 -0
- package/templates/roles/engineer/HEARTBEAT.md +39 -0
- package/templates/roles/engineer/SOUL.md +20 -0
- package/templates/roles/engineer/TOOLS.md +3 -0
- package/templates/roles/engineer/role.meta.json +13 -0
- package/templates/roles/game-artist/AGENTS.md +29 -0
- package/templates/roles/game-artist/HEARTBEAT.md +37 -0
- package/templates/roles/game-artist/SOUL.md +24 -0
- package/templates/roles/game-artist/TOOLS.md +3 -0
- package/templates/roles/game-artist/role.meta.json +14 -0
- package/templates/roles/game-designer/AGENTS.md +29 -0
- package/templates/roles/game-designer/HEARTBEAT.md +37 -0
- package/templates/roles/game-designer/SOUL.md +17 -0
- package/templates/roles/game-designer/TOOLS.md +3 -0
- package/templates/roles/game-designer/role.meta.json +14 -0
- package/templates/roles/level-designer/AGENTS.md +29 -0
- package/templates/roles/level-designer/HEARTBEAT.md +37 -0
- package/templates/roles/level-designer/SOUL.md +17 -0
- package/templates/roles/level-designer/TOOLS.md +3 -0
- package/templates/roles/level-designer/role.meta.json +13 -0
- package/templates/roles/product-owner/AGENTS.md +29 -0
- package/templates/roles/product-owner/HEARTBEAT.md +35 -0
- package/templates/roles/product-owner/SOUL.md +17 -0
- package/templates/roles/product-owner/TOOLS.md +3 -0
- package/templates/roles/product-owner/role.meta.json +14 -0
- package/templates/roles/qa/AGENTS.md +31 -0
- package/templates/roles/qa/HEARTBEAT.md +37 -0
- package/templates/roles/qa/SOUL.md +17 -0
- package/templates/roles/qa/TOOLS.md +3 -0
- package/templates/roles/qa/role.meta.json +17 -0
- package/templates/roles/security-engineer/AGENTS.md +42 -0
- package/templates/roles/security-engineer/HEARTBEAT.md +33 -0
- package/templates/roles/security-engineer/SOUL.md +17 -0
- package/templates/roles/security-engineer/TOOLS.md +3 -0
- package/templates/roles/security-engineer/role.meta.json +17 -0
- package/templates/roles/technical-writer/AGENTS.md +41 -0
- package/templates/roles/technical-writer/HEARTBEAT.md +32 -0
- package/templates/roles/technical-writer/SOUL.md +17 -0
- package/templates/roles/technical-writer/TOOLS.md +3 -0
- package/templates/roles/technical-writer/role.meta.json +16 -0
- package/templates/roles/ui-designer/AGENTS.md +29 -0
- package/templates/roles/ui-designer/HEARTBEAT.md +37 -0
- package/templates/roles/ui-designer/SOUL.md +17 -0
- package/templates/roles/ui-designer/TOOLS.md +3 -0
- package/templates/roles/ui-designer/role.meta.json +17 -0
- package/templates/roles/ux-researcher/AGENTS.md +29 -0
- package/templates/roles/ux-researcher/HEARTBEAT.md +37 -0
- package/templates/roles/ux-researcher/SOUL.md +17 -0
- package/templates/roles/ux-researcher/TOOLS.md +3 -0
- package/templates/roles/ux-researcher/role.meta.json +14 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "auto-assign",
|
|
3
|
+
"description": "Automatically assigns unowned backlog items to available agents. Keeps work flowing without manual dispatch.",
|
|
4
|
+
"permissions": [
|
|
5
|
+
"tasks:assign"
|
|
6
|
+
],
|
|
7
|
+
"capabilities": [
|
|
8
|
+
{
|
|
9
|
+
"skill": "auto-assign",
|
|
10
|
+
"owners": [
|
|
11
|
+
"product-owner",
|
|
12
|
+
"ceo"
|
|
13
|
+
],
|
|
14
|
+
"fallbackSkill": "auto-assign.fallback"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"routines": [
|
|
18
|
+
{
|
|
19
|
+
"title": "Auto-assign unassigned issues",
|
|
20
|
+
"description": "Find unassigned todo issues and assign to the best available agent based on role and workload.",
|
|
21
|
+
"assignTo": "capability:auto-assign",
|
|
22
|
+
"schedule": "0 9,13 * * 1-5",
|
|
23
|
+
"priority": "medium",
|
|
24
|
+
"concurrencyPolicy": "skip_if_active"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Skill: Auto-Assign
|
|
2
|
+
|
|
3
|
+
You own issue assignment. Match issues to the right agents based on skills and availability.
|
|
4
|
+
|
|
5
|
+
## Assignment Check
|
|
6
|
+
|
|
7
|
+
Run this on every heartbeat, after handling your own assignments.
|
|
8
|
+
|
|
9
|
+
1. Query idle agents: `GET /api/companies/{companyId}/agents?status=idle`
|
|
10
|
+
2. Query unassigned todo issues: `GET /api/companies/{companyId}/issues?status=todo&unassigned=true`
|
|
11
|
+
3. For each idle agent that matches the issue requirements:
|
|
12
|
+
- Pick the highest-priority unassigned issue
|
|
13
|
+
- Assign it: `PATCH /api/issues/{id}` with `assigneeAgentId`
|
|
14
|
+
- The agent will wake on the assignment trigger
|
|
15
|
+
4. Record assignments in your daily notes.
|
|
16
|
+
|
|
17
|
+
## Rules
|
|
18
|
+
|
|
19
|
+
- Match issues to agents by role/capabilities. Don't assign code tasks to non-engineering agents.
|
|
20
|
+
- Assign one issue at a time per agent. Don't overload.
|
|
21
|
+
- If no suitable match exists, leave the issue unassigned and note it.
|
|
22
|
+
- Respect agent budget. Don't assign to agents near their budget limit.
|
|
23
|
+
- Prioritize unblocking over optimization — a good-enough assignment now beats a perfect one later.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Module: backlog
|
|
2
|
+
|
|
3
|
+
Owns the product backlog lifecycle — from goal decomposition to a steady pipeline of actionable issues.
|
|
4
|
+
|
|
5
|
+
## What it adds
|
|
6
|
+
|
|
7
|
+
- **Backlog health skill**: Monitors unassigned issue count and generates new issues from the roadmap when the pipeline runs low.
|
|
8
|
+
- **Process doc**: `backlog-process.md` — shared workflow guide for how issues flow from goals to agents.
|
|
9
|
+
|
|
10
|
+
## How it works
|
|
11
|
+
|
|
12
|
+
On every heartbeat, the backlog owner checks the issue pipeline:
|
|
13
|
+
1. Count unassigned issues with status `todo`
|
|
14
|
+
2. If count < threshold (default: 3), decompose the next chunk of work from the goal/roadmap into concrete issues
|
|
15
|
+
3. New issues are created with proper `projectId`, `goalId`, priority, and acceptance criteria. For top-level backlog issues, never omit `projectId`.
|
|
16
|
+
4. Issues are left unassigned for the auto-assign module (or manual assignment)
|
|
17
|
+
|
|
18
|
+
## Ownership
|
|
19
|
+
|
|
20
|
+
- **Primary**: Product Owner — owns backlog health, prioritization, and issue quality
|
|
21
|
+
- **Fallback**: CEO — creates minimal issues to keep engineers unblocked when PO is absent
|
|
22
|
+
|
|
23
|
+
## Best for
|
|
24
|
+
|
|
25
|
+
- Any company that wants a steady pipeline of work without manual issue creation
|
|
26
|
+
- Keeps engineers fed with work continuously
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
## Backlog Health Check (Fallback)
|
|
2
|
+
|
|
3
|
+
Only if the Product Owner is absent or stalled:
|
|
4
|
+
|
|
5
|
+
1. Query unassigned issues: `GET /api/companies/{companyId}/issues?status=todo&unassigned=true`
|
|
6
|
+
2. If fewer than 1 unassigned issue AND PO hasn't acted recently:
|
|
7
|
+
- Create 1-2 high-priority issues from the roadmap to keep engineers unblocked.
|
|
8
|
+
- Attach `labelIds` — fetch via `GET /api/companies/{companyId}/labels`. If none exist, create defaults first (see `backlog-health` skill).
|
|
9
|
+
- Tag the PO to take over backlog grooming.
|
|
10
|
+
3. If the PO is active and backlog has 1+ issues, skip this step.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Skill: Backlog Health (Fallback)
|
|
2
|
+
|
|
3
|
+
The Product Owner primarily manages the backlog pipeline. You are the fallback — step in only if the PO is absent, stalled, or the backlog is critically empty.
|
|
4
|
+
|
|
5
|
+
## Backlog Health Check (Fallback)
|
|
6
|
+
|
|
7
|
+
On your heartbeat, after handling assignments:
|
|
8
|
+
|
|
9
|
+
1. Query unassigned issues: `GET /api/companies/{companyId}/issues?status=todo&unassigned=true`
|
|
10
|
+
2. If fewer than 1 unassigned issue remains AND the Product Owner hasn't acted recently:
|
|
11
|
+
- Create 1-2 high-priority issues from the roadmap to keep engineers unblocked
|
|
12
|
+
- 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
|
+
- Comment on the issue tagging the Product Owner to take over backlog grooming
|
|
14
|
+
3. If the Product Owner is active and the backlog has 1+ issues, skip this step.
|
|
15
|
+
|
|
16
|
+
## Rules
|
|
17
|
+
|
|
18
|
+
- This is a safety net, not your primary job. Let the PO own it.
|
|
19
|
+
- Only create issues when engineers would otherwise have nothing to work on.
|
|
20
|
+
- Keep it minimal — just enough to unblock, not a full grooming session.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
## Backlog Health Check
|
|
2
|
+
|
|
3
|
+
After handling your own assignments:
|
|
4
|
+
|
|
5
|
+
1. Query unassigned issues: `GET /api/companies/{companyId}/issues?status=todo&unassigned=true`
|
|
6
|
+
2. If fewer than 3 unassigned issues remain:
|
|
7
|
+
- Review the company goal and current progress.
|
|
8
|
+
- Identify the next logical chunk of work from the roadmap.
|
|
9
|
+
- Create 3-5 new issues via `POST /api/companies/{companyId}/issues`, making sure each payload includes the correct `projectId`.
|
|
10
|
+
- Each issue needs: `title`, `description`, `priority`, `projectId`, `goalId`, `labelIds`.
|
|
11
|
+
- Use the active roadmap project's `projectId`. Do not leave top-level backlog issues projectless.
|
|
12
|
+
- Fetch labels once per session: `GET /api/companies/{companyId}/labels`. If none exist, create them first (see `backlog-health` skill).
|
|
13
|
+
- Write clear acceptance criteria. Leave issues unassigned.
|
|
14
|
+
- Only create subissues for independently deliverable slices. Do not split tightly coupled implementation across sibling subissues.
|
|
15
|
+
3. Record what you generated in daily notes.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Backlog Process
|
|
2
|
+
|
|
3
|
+
The product backlog is the single source of work for all agents. This document defines how issues flow from company goals to agent assignments.
|
|
4
|
+
|
|
5
|
+
## Lifecycle
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Goal → Roadmap → Issues → Assignment → Execution → Done
|
|
9
|
+
```
|
|
10
|
+
|
|
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`.
|
|
13
|
+
3. **Pipeline health** — The backlog owner monitors unassigned issue count. When fewer than 3 remain, the next batch is generated from the roadmap.
|
|
14
|
+
4. **Assignment** — Issues are left unassigned at creation. Assignment happens separately (auto-assign module or manual).
|
|
15
|
+
5. **Execution** — Agents check out assigned issues, work them, and mark done.
|
|
16
|
+
|
|
17
|
+
## Issue Quality
|
|
18
|
+
|
|
19
|
+
Every issue should be:
|
|
20
|
+
|
|
21
|
+
- **Small** — completable in a single agent session
|
|
22
|
+
- **Actionable** — clear what "done" looks like
|
|
23
|
+
- **Independent** — minimal blocking dependencies on other issues
|
|
24
|
+
- **Prioritized** — `priority` field reflects roadmap order and urgency
|
|
25
|
+
- **Labeled** — at least one label from the company's label set via `labelIds`
|
|
26
|
+
|
|
27
|
+
### Acceptance Criteria
|
|
28
|
+
|
|
29
|
+
Write acceptance criteria in the issue description. Engineers use these to validate their work before marking done. Keep them concrete and testable.
|
|
30
|
+
|
|
31
|
+
## Sources of Issues
|
|
32
|
+
|
|
33
|
+
Issues can enter the backlog from multiple sources:
|
|
34
|
+
|
|
35
|
+
- **Backlog owner** — primary source, decomposes roadmap into issues
|
|
36
|
+
- **Other modules** — architecture-plan, user-testing, market-analysis, etc. may create follow-up issues from their workflows
|
|
37
|
+
- **Engineers** — may create sub-issues or bug reports during execution
|
|
38
|
+
- **CEO** — fallback issue creation when backlog owner is absent
|
|
39
|
+
|
|
40
|
+
All sources use the same API and issue format. The backlog owner is responsible for overall health and prioritization, not for being the only creator.
|
|
41
|
+
|
|
42
|
+
## Prioritization
|
|
43
|
+
|
|
44
|
+
- **P0** — Blocking other work or critical path. Do first.
|
|
45
|
+
- **P1** — Important for current milestone. Do soon.
|
|
46
|
+
- **P2** — Valuable but not urgent. Do when capacity allows.
|
|
47
|
+
- **P3** — Nice to have. Backlog buffer.
|
|
48
|
+
|
|
49
|
+
Re-prioritize when milestones shift or new information arrives. Don't let low-priority issues accumulate indefinitely — archive or cancel stale ones.
|
|
50
|
+
|
|
51
|
+
## Backlog Health Indicators
|
|
52
|
+
|
|
53
|
+
- **Healthy**: 3+ unassigned issues in `todo`, covering the next logical chunk of work
|
|
54
|
+
- **Thin**: 1-2 unassigned issues — generate more soon
|
|
55
|
+
- **Empty**: 0 unassigned issues — engineers will idle. Generate immediately.
|
|
56
|
+
- **Bloated**: 20+ unassigned issues — stop creating, focus on prioritization and cleanup
|
|
57
|
+
|
|
58
|
+
## Coordination
|
|
59
|
+
|
|
60
|
+
- The backlog owner coordinates with the CEO on strategic priorities when unclear.
|
|
61
|
+
- 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
|
+
- When multiple agents create issues (e.g., from user-testing findings), the backlog owner reviews and re-prioritizes as needed.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Product Backlog
|
|
2
|
+
|
|
3
|
+
_This is the living backlog for the company. The backlog owner maintains this document alongside the issue tracker._
|
|
4
|
+
|
|
5
|
+
## Current Milestone
|
|
6
|
+
|
|
7
|
+
**Milestone:** _(name of the current milestone from the roadmap)_
|
|
8
|
+
**Status:** _(on track / at risk / blocked)_
|
|
9
|
+
**Target:** _(what "done" looks like for this milestone)_
|
|
10
|
+
|
|
11
|
+
## Roadmap
|
|
12
|
+
|
|
13
|
+
Break the company goal into milestones. Each milestone is a coherent chunk of value that can be delivered and validated.
|
|
14
|
+
|
|
15
|
+
| # | Milestone | Status | Key Deliverables |
|
|
16
|
+
|:--|:----------|:-------|:-----------------|
|
|
17
|
+
| 1 | _(name)_ | _(planned / active / done)_ | _(what ships)_ |
|
|
18
|
+
| 2 | | | |
|
|
19
|
+
| 3 | | | |
|
|
20
|
+
|
|
21
|
+
## Issue Labels
|
|
22
|
+
|
|
23
|
+
These categories must exist as Paperclip labels. Create them via `POST /api/companies/{companyId}/labels` with `{ "name": "...", "color": "..." }` before creating your first issues. Attach labels to every issue via `labelIds`.
|
|
24
|
+
|
|
25
|
+
| Label | Color | Use for |
|
|
26
|
+
|:------|:------|:--------|
|
|
27
|
+
| feature | `0075ca` | New user-facing capability |
|
|
28
|
+
| bug | `d73a4a` | Defect or regression |
|
|
29
|
+
| chore | `7057ff` | Refactoring, cleanup, dependency updates |
|
|
30
|
+
| spike | `006b75` | Research or investigation with a time-box |
|
|
31
|
+
| blocked | `e4e669` | Cannot proceed, needs unblocking |
|
|
32
|
+
|
|
33
|
+
Add more labels as the project evolves (e.g., `docs`, `design`, `security`). Pick distinct hex colors. Fetch existing labels: `GET /api/companies/{companyId}/labels`.
|
|
34
|
+
|
|
35
|
+
## Backlog Snapshot
|
|
36
|
+
|
|
37
|
+
_Summary of current backlog health. Update on each heartbeat cycle._
|
|
38
|
+
|
|
39
|
+
- **Unassigned todo issues:** _(count)_
|
|
40
|
+
- **In-progress issues:** _(count)_
|
|
41
|
+
- **Health:** _(healthy / thin / empty / bloated — see backlog-process.md)_
|
|
42
|
+
|
|
43
|
+
## Decisions Log
|
|
44
|
+
|
|
45
|
+
Record significant backlog decisions so context isn't lost:
|
|
46
|
+
|
|
47
|
+
| Date | Decision | Rationale |
|
|
48
|
+
|:-----|:---------|:----------|
|
|
49
|
+
| | | |
|
|
50
|
+
|
|
51
|
+
## Notes
|
|
52
|
+
|
|
53
|
+
_(Anything relevant to backlog strategy: deferred items, external dependencies, scope changes, feedback from other agents.)_
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "backlog",
|
|
3
|
+
"description": "Monitors and maintains backlog health. Surfaces stale issues and blocked work so the queue stays actionable.",
|
|
4
|
+
"capabilities": [
|
|
5
|
+
{
|
|
6
|
+
"skill": "backlog-health",
|
|
7
|
+
"owners": [
|
|
8
|
+
"product-owner",
|
|
9
|
+
"ceo"
|
|
10
|
+
],
|
|
11
|
+
"fallbackSkill": "backlog-health.fallback"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"issues": [
|
|
15
|
+
{
|
|
16
|
+
"title": "Create roadmap and generate initial backlog",
|
|
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."
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"routines": [
|
|
22
|
+
{
|
|
23
|
+
"title": "Backlog grooming",
|
|
24
|
+
"description": "Ensure backlog has at least 3 actionable unassigned issues. If running low, generate new issues from the roadmap.",
|
|
25
|
+
"assignTo": "capability:backlog-health",
|
|
26
|
+
"schedule": "0 10 * * 1,3,5",
|
|
27
|
+
"priority": "medium",
|
|
28
|
+
"concurrencyPolicy": "skip_if_active"
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Skill: Backlog Health
|
|
2
|
+
|
|
3
|
+
You own the product backlog pipeline.
|
|
4
|
+
|
|
5
|
+
## Label Setup
|
|
6
|
+
|
|
7
|
+
Before creating your first batch of issues, set up labels for the company:
|
|
8
|
+
|
|
9
|
+
1. Check existing labels: `GET /api/companies/{companyId}/labels`
|
|
10
|
+
2. If no labels exist, create them via `POST /api/companies/{companyId}/labels` with `{ "name": "...", "color": "..." }`:
|
|
11
|
+
|
|
12
|
+
| Label | Color | Use for |
|
|
13
|
+
|:------|:------|:--------|
|
|
14
|
+
| feature | `0075ca` | New user-facing capability |
|
|
15
|
+
| bug | `d73a4a` | Defects and regressions |
|
|
16
|
+
| chore | `7057ff` | Refactoring, cleanup, dependency updates |
|
|
17
|
+
| spike | `006b75` | Research or investigation with a time-box |
|
|
18
|
+
| blocked | `e4e669` | Cannot proceed, needs unblocking |
|
|
19
|
+
|
|
20
|
+
Add additional labels if the roadmap calls for them (e.g., `docs`, `design`, `security`). Pick distinct hex colors.
|
|
21
|
+
|
|
22
|
+
## Backlog Health Check
|
|
23
|
+
|
|
24
|
+
Run this on every heartbeat, after handling your own assignments.
|
|
25
|
+
|
|
26
|
+
1. Query unassigned issues: `GET /api/companies/{companyId}/issues?status=todo&unassigned=true`
|
|
27
|
+
2. If fewer than 3 unassigned issues remain:
|
|
28
|
+
- Review the company goal and current progress
|
|
29
|
+
- Identify the next logical chunk of work from the roadmap
|
|
30
|
+
- Create 3-5 new issues via `POST /api/companies/{companyId}/issues`, making sure each payload includes the correct `projectId`
|
|
31
|
+
- Each issue must have: `title`, `description`, `priority`, `projectId`, `goalId`, `labelIds`
|
|
32
|
+
- Use the current roadmap project's `projectId`; never create top-level backlog issues with `projectId: null`
|
|
33
|
+
- Fetch label IDs once per session: `GET /api/companies/{companyId}/labels`
|
|
34
|
+
- Write clear acceptance criteria in the description
|
|
35
|
+
- Leave issues unassigned — assignment happens separately
|
|
36
|
+
3. Record what you generated in your daily notes.
|
|
37
|
+
|
|
38
|
+
## Rules
|
|
39
|
+
|
|
40
|
+
- Don't create duplicate issues. Check existing issues before creating new ones.
|
|
41
|
+
- Keep issues small and actionable. Each should be completable in a single agent session.
|
|
42
|
+
- Split into subissues only when each child can be completed, tested, and merged independently in its own isolated workspace.
|
|
43
|
+
- Do not split tightly coupled implementation work across sibling subissues (same core code path/file cluster changed together). Keep coupled work in one issue, or sequence it explicitly so later work starts only after the prerequisite issue is done.
|
|
44
|
+
- Set priority based on roadmap order and dependencies.
|
|
45
|
+
- Always attach at least one label to every issue you create.
|
|
46
|
+
- If the goal is fully decomposed into issues, don't create more. Report to the CEO instead.
|
|
47
|
+
- Coordinate with the CEO on strategic priorities when unclear.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Skill: Brand Identity (Fallback)
|
|
2
|
+
|
|
3
|
+
The UI Designer and CMO both own brand identity above you. You are the last-resort fallback — step in only if neither has addressed brand guidelines.
|
|
4
|
+
|
|
5
|
+
## Brand Identity (Fallback)
|
|
6
|
+
|
|
7
|
+
1. If no `docs/BRAND-IDENTITY.md` exists and no designer has started:
|
|
8
|
+
- Set up a minimal brand placeholder with basic defaults
|
|
9
|
+
- Choose a neutral color palette (1 primary, 1 accent, 1 neutral)
|
|
10
|
+
- Pick a safe, widely available font pairing (e.g., Inter + system serif)
|
|
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.
|
|
14
|
+
|
|
15
|
+
## Rules
|
|
16
|
+
|
|
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.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Skill: Brand Identity (Fallback)
|
|
2
|
+
|
|
3
|
+
The UI Designer primarily owns brand identity and visual guidelines. You are the fallback — step in only if no designer has addressed brand guidelines.
|
|
4
|
+
|
|
5
|
+
## Brand Identity (Fallback)
|
|
6
|
+
|
|
7
|
+
1. If no `docs/BRAND-IDENTITY.md` exists and no designer has started:
|
|
8
|
+
- Define brand positioning: mission statement, target audience, key differentiators
|
|
9
|
+
- Establish tone of voice and communication guidelines
|
|
10
|
+
- Set up a minimal color palette and typography recommendation
|
|
11
|
+
- Document in `docs/BRAND-IDENTITY.md` and mark visual choices as **provisional**
|
|
12
|
+
- Create an issue for the designer to refine visual identity
|
|
13
|
+
2. If a designer is active, skip this entirely.
|
|
14
|
+
|
|
15
|
+
## Rules
|
|
16
|
+
|
|
17
|
+
- This is a safety net. Focus on brand strategy and messaging — your strength as CMO.
|
|
18
|
+
- Visual design choices (colors, typography, logo) are provisional — the designer owns the final visual identity.
|
|
19
|
+
- Let the designer lead on visual execution; you lead on positioning and messaging.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Brand Identity
|
|
2
|
+
|
|
3
|
+
## Brand Vision
|
|
4
|
+
|
|
5
|
+
_What the brand stands for, its mission, and the emotional response it should evoke._
|
|
6
|
+
|
|
7
|
+
## Color Palette
|
|
8
|
+
|
|
9
|
+
| Role | Name | Hex | RGB | Usage |
|
|
10
|
+
|-----------|-------|---------|---------------|------------------|
|
|
11
|
+
| Primary | _..._ | _..._ | _..._ | _..._ |
|
|
12
|
+
| Secondary | _..._ | _..._ | _..._ | _..._ |
|
|
13
|
+
| Accent | _..._ | _..._ | _..._ | _..._ |
|
|
14
|
+
| Neutral | _..._ | _..._ | _..._ | _..._ |
|
|
15
|
+
| Error | _..._ | _..._ | _..._ | _..._ |
|
|
16
|
+
| Success | _..._ | _..._ | _..._ | _..._ |
|
|
17
|
+
|
|
18
|
+
## Typography
|
|
19
|
+
|
|
20
|
+
| Role | Typeface | Weight | Size | Usage |
|
|
21
|
+
|----------|----------|---------|-------|------------------|
|
|
22
|
+
| Heading | _..._ | _..._ | _..._ | _..._ |
|
|
23
|
+
| Body | _..._ | _..._ | _..._ | _..._ |
|
|
24
|
+
| Mono | _..._ | _..._ | _..._ | _..._ |
|
|
25
|
+
|
|
26
|
+
## Logo Usage
|
|
27
|
+
|
|
28
|
+
_Logo variants, clear space requirements, minimum size, and usage guidelines._
|
|
29
|
+
|
|
30
|
+
_Do's and don'ts for logo placement and modification._
|
|
31
|
+
|
|
32
|
+
## Iconography
|
|
33
|
+
|
|
34
|
+
_Icon style (outline, filled, duotone), stroke weight, grid size, and alignment rules._
|
|
35
|
+
|
|
36
|
+
## Tone of Voice
|
|
37
|
+
|
|
38
|
+
_Communication style, vocabulary preferences, and brand personality traits._
|
|
39
|
+
|
|
40
|
+
_Examples of on-brand vs. off-brand language._
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
_Generated by Clipper. Fill in during brand-identity task._
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "brand-identity",
|
|
3
|
+
"description": "Establishes brand identity: naming, visual language, messaging, and tone of voice.",
|
|
4
|
+
"capabilities": [
|
|
5
|
+
{
|
|
6
|
+
"skill": "brand-identity",
|
|
7
|
+
"owners": [
|
|
8
|
+
"ui-designer",
|
|
9
|
+
"cmo",
|
|
10
|
+
"ceo"
|
|
11
|
+
],
|
|
12
|
+
"fallbackSkill": "brand-identity.fallback"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"issues": [
|
|
16
|
+
{
|
|
17
|
+
"title": "Define brand identity and visual guidelines",
|
|
18
|
+
"assignTo": "capability:brand-identity",
|
|
19
|
+
"description": "Create the brand book: logo usage, color palette, typography, iconography, and tone-of-voice guidelines. Document everything in docs/BRAND-IDENTITY.md."
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Skill: Brand Identity
|
|
2
|
+
|
|
3
|
+
You own the company's visual identity and brand guidelines. Define a cohesive brand that reflects the company's mission and resonates with its audience.
|
|
4
|
+
|
|
5
|
+
## Brand Identity Process
|
|
6
|
+
|
|
7
|
+
1. Audit the company goal and vision for brand direction:
|
|
8
|
+
- Review the company goal, target audience, and market positioning
|
|
9
|
+
- Identify key brand attributes (e.g., professional, playful, minimal, bold)
|
|
10
|
+
- Note any existing brand assets or constraints
|
|
11
|
+
2. Define the core brand elements:
|
|
12
|
+
- **Color palette**: Primary, secondary, and accent colors with hex/RGB values
|
|
13
|
+
- **Typography**: Heading and body typefaces, size scale, weight usage
|
|
14
|
+
- **Logo usage**: Clear space, minimum size, do's and don'ts
|
|
15
|
+
- **Iconography**: Style, stroke weight, grid alignment
|
|
16
|
+
- **Tone of voice**: Communication style, vocabulary, personality
|
|
17
|
+
3. Document everything in `docs/BRAND-IDENTITY.md`:
|
|
18
|
+
- Use the brand-identity-template as a starting point
|
|
19
|
+
- Fill in all sections with concrete values and rationale
|
|
20
|
+
- Include visual examples or references where possible
|
|
21
|
+
4. Create initial design tokens if a tech stack exists:
|
|
22
|
+
- If `docs/TECH-STACK.md` is present, produce a tokens file (CSS custom properties or JSON) matching the chosen stack
|
|
23
|
+
- Reference the design-system module if the architecture-plan module exists
|
|
24
|
+
|
|
25
|
+
## Rules
|
|
26
|
+
|
|
27
|
+
- Consistency over novelty — a cohesive system beats clever one-offs.
|
|
28
|
+
- Document rationale for every choice (why this color, why this typeface).
|
|
29
|
+
- Ensure accessibility: color contrast must meet WCAG AA at minimum.
|
|
30
|
+
- If a decision requires board input (e.g., paid font licensing), create an approval request.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "build-api",
|
|
3
|
+
"title": "Build REST API",
|
|
4
|
+
"description": "Designs and documents the API before implementation. Defines contracts, endpoints, and data shapes upfront.",
|
|
5
|
+
"requires": [
|
|
6
|
+
"github-repo"
|
|
7
|
+
],
|
|
8
|
+
"capabilities": [
|
|
9
|
+
{
|
|
10
|
+
"skill": "api-design",
|
|
11
|
+
"owners": [
|
|
12
|
+
"engineer",
|
|
13
|
+
"ceo"
|
|
14
|
+
],
|
|
15
|
+
"fallbackSkill": null
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"issues": [
|
|
19
|
+
{
|
|
20
|
+
"title": "Design API schema and scaffold project",
|
|
21
|
+
"assignTo": "engineer",
|
|
22
|
+
"description": "Define the data model for the API's primary resources. Create database migrations. Scaffold the API project with route structure, health check endpoint, and request validation."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"title": "Define database schema and create migrations",
|
|
26
|
+
"description": "Design the data model for the API's primary resources. Create database migration files that can set up the schema from scratch. Include indexes for common query patterns.",
|
|
27
|
+
"priority": "high",
|
|
28
|
+
"assignTo": "engineer"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"title": "Scaffold API project and route structure",
|
|
32
|
+
"description": "Set up the API project with the chosen framework (Express, Fastify, Django, etc.). Create the route/controller structure with placeholder endpoints that return 501. Add health check endpoint at GET /health.",
|
|
33
|
+
"priority": "high",
|
|
34
|
+
"assignTo": "engineer"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"title": "Implement CRUD endpoints for primary resource",
|
|
38
|
+
"description": "Build full CRUD (Create, Read, Update, Delete) for the main resource. Include input validation, proper HTTP status codes (201 for create, 404 for not found, 422 for validation errors), and pagination for list endpoints.",
|
|
39
|
+
"priority": "high",
|
|
40
|
+
"assignTo": "engineer"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"title": "Add request validation middleware",
|
|
44
|
+
"description": "Add middleware that validates request bodies and query parameters against defined schemas. Return clear 422 errors with field-level messages. Use a validation library (Zod, Joi, Pydantic, etc.).",
|
|
45
|
+
"priority": "medium",
|
|
46
|
+
"assignTo": "engineer"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"title": "Add authentication middleware",
|
|
50
|
+
"description": "Implement authentication using JWT or session tokens. Add middleware that verifies tokens on protected routes and rejects unauthenticated requests with 401. Include a login/token endpoint.",
|
|
51
|
+
"priority": "high",
|
|
52
|
+
"assignTo": "engineer"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"title": "Add role-based authorization",
|
|
56
|
+
"description": "Implement authorization so users can only access resources they own or are permitted to see. Add role checks where needed. Return 403 for unauthorized access attempts.",
|
|
57
|
+
"priority": "medium",
|
|
58
|
+
"assignTo": "engineer"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"title": "Generate API documentation",
|
|
62
|
+
"description": "Set up auto-generated API docs using OpenAPI/Swagger, or a similar tool. Annotate endpoints with descriptions, parameter types, and example responses. Serve docs at /api-docs or equivalent.",
|
|
63
|
+
"priority": "medium",
|
|
64
|
+
"assignTo": "engineer"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"title": "Write API integration tests",
|
|
68
|
+
"description": "Write integration tests that hit the API endpoints with real HTTP requests. Cover happy paths, validation errors, auth failures, and edge cases. Use a test database that is reset between runs.",
|
|
69
|
+
"priority": "medium",
|
|
70
|
+
"assignTo": "engineer"
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"routines": [
|
|
74
|
+
{
|
|
75
|
+
"title": "API health check",
|
|
76
|
+
"description": "Verify the API health endpoint responds correctly and monitor uptime.",
|
|
77
|
+
"schedule": "*/15 * * * *",
|
|
78
|
+
"assignTo": "engineer"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"title": "Dependency and security audit",
|
|
82
|
+
"description": "Run dependency audit to check for known vulnerabilities in API dependencies. Flag any critical or high severity issues.",
|
|
83
|
+
"schedule": "0 8 * * 1",
|
|
84
|
+
"assignTo": "engineer"
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"goal": {
|
|
88
|
+
"title": "Build a REST API",
|
|
89
|
+
"description": "Design and implement a REST API from schema to documentation. Cover data modeling, endpoint implementation, authentication, and auto-generated API docs.",
|
|
90
|
+
"project": true,
|
|
91
|
+
"subgoals": [
|
|
92
|
+
{
|
|
93
|
+
"id": "schema-design",
|
|
94
|
+
"title": "Schema design",
|
|
95
|
+
"level": "team",
|
|
96
|
+
"description": "Define the data model and database schema for the API. Database schema is defined, migrations exist, and the schema can be applied to a fresh database."
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "endpoints",
|
|
100
|
+
"title": "Core endpoints",
|
|
101
|
+
"level": "team",
|
|
102
|
+
"description": "Implement the CRUD endpoints for primary resources. All core resource endpoints work with proper status codes, validation, and error handling."
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "auth",
|
|
106
|
+
"title": "Authentication and authorization",
|
|
107
|
+
"level": "team",
|
|
108
|
+
"description": "Add authentication to protect endpoints and authorization to control access. Unauthenticated requests are rejected. Users can only access resources they are authorized to see."
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "docs",
|
|
112
|
+
"title": "API documentation",
|
|
113
|
+
"level": "team",
|
|
114
|
+
"description": "Generate and publish API documentation so consumers can integrate. API docs are generated from source and accessible at a known URL."
|
|
115
|
+
}
|
|
116
|
+
]
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# API Design
|
|
2
|
+
|
|
3
|
+
You are responsible for designing and implementing a REST API. Follow these principles:
|
|
4
|
+
|
|
5
|
+
## Design Principles
|
|
6
|
+
|
|
7
|
+
1. **Resource-oriented URLs** — Use nouns, not verbs. `/users`, `/orders/{id}`, not `/getUser` or `/createOrder`.
|
|
8
|
+
2. **Consistent HTTP methods** — GET (read), POST (create), PUT/PATCH (update), DELETE (remove). Return appropriate status codes: 200, 201, 204, 400, 401, 403, 404, 409, 422, 500.
|
|
9
|
+
3. **Input validation at the boundary** — Validate all request bodies and query parameters before touching the database. Return 422 with field-level error messages.
|
|
10
|
+
4. **Pagination by default** — List endpoints return paginated results. Use cursor-based or offset pagination consistently.
|
|
11
|
+
5. **Predictable error format** — Every error response uses the same shape: `{ "error": { "code": "...", "message": "...", "details": [...] } }`.
|
|
12
|
+
|
|
13
|
+
## Schema Design
|
|
14
|
+
|
|
15
|
+
When designing the data model:
|
|
16
|
+
|
|
17
|
+
- Start from the API consumer's perspective — what objects do they need to create, read, update?
|
|
18
|
+
- Normalize where it prevents data inconsistency; denormalize where it prevents N+1 queries
|
|
19
|
+
- Always include `id`, `createdAt`, `updatedAt` on every table
|
|
20
|
+
- Add indexes for: primary keys, foreign keys, fields used in WHERE/ORDER BY, unique constraints
|
|
21
|
+
- Write migrations that are reversible (up + down)
|
|
22
|
+
|
|
23
|
+
## Authentication & Authorization
|
|
24
|
+
|
|
25
|
+
- **Authentication** verifies identity (who are you?). Use JWT or session tokens.
|
|
26
|
+
- **Authorization** verifies access (can you do this?). Check ownership and roles.
|
|
27
|
+
- Protected routes return 401 (not authenticated) or 403 (not authorized) — never 404 to hide resources.
|
|
28
|
+
- Store password hashes (bcrypt/argon2), never plaintext.
|
|
29
|
+
|
|
30
|
+
## Documentation
|
|
31
|
+
|
|
32
|
+
- Annotate every endpoint with: description, parameters (type, required, constraints), request body schema, response schema, example request/response, possible error codes.
|
|
33
|
+
- Generate docs from source annotations (OpenAPI/Swagger) — not manually maintained.
|
|
34
|
+
- Keep docs in sync by making them part of the build.
|
|
35
|
+
|
|
36
|
+
## Output Artifacts
|
|
37
|
+
|
|
38
|
+
Document your API design decisions in `docs/API-DESIGN.md`:
|
|
39
|
+
- Resource model (entities and relationships)
|
|
40
|
+
- Endpoint inventory (method, path, description, auth requirement)
|
|
41
|
+
- Authentication strategy
|
|
42
|
+
- Error handling conventions
|
|
43
|
+
- Pagination approach
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Skill: CI/CD Pipeline
|
|
2
|
+
|
|
3
|
+
You are the DevOps engineer and CI/CD is your core domain. You own the full pipeline lifecycle — build, test, deploy, and ongoing maintenance.
|
|
4
|
+
|
|
5
|
+
## Setup Steps
|
|
6
|
+
|
|
7
|
+
1. Review the tech stack to determine build, lint, and test tooling
|
|
8
|
+
2. Create a CI workflow (GitHub Actions or equivalent):
|
|
9
|
+
- Lint on all PRs and pushes to main
|
|
10
|
+
- Run tests on all PRs and pushes to main
|
|
11
|
+
- Build/typecheck to verify compilation
|
|
12
|
+
3. Create a CD workflow:
|
|
13
|
+
- Trigger on merge to main
|
|
14
|
+
- Deploy to the target environment
|
|
15
|
+
- Run smoke tests after deployment
|
|
16
|
+
4. Add status badges to the project README
|
|
17
|
+
5. Set up infrastructure-as-code for pipeline resources (runners, caches, secrets)
|
|
18
|
+
6. Document the full pipeline in `docs/CI-CD.md`
|
|
19
|
+
|
|
20
|
+
## Rules
|
|
21
|
+
|
|
22
|
+
- Fail fast — put the quickest checks (lint, typecheck) first.
|
|
23
|
+
- Keep pipelines under 5 minutes. If they exceed this, add caching or split stages.
|
|
24
|
+
- Use dependency caching (e.g., `actions/cache`, `setup-node` cache) to speed up installs.
|
|
25
|
+
- Pin action versions to full SHAs, not tags, for security.
|
|
26
|
+
- Never store secrets in workflow files — use GitHub Secrets or equivalent.
|
|
27
|
+
- If CI breaks main, fix it immediately — a red main blocks everyone.
|
|
28
|
+
- Own pipeline health metrics — track build times, flake rates, deployment frequency.
|