@accelerationguy/accel 1.0.0
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/CLAUDE.md +19 -0
- package/LICENSE +33 -0
- package/README.md +275 -0
- package/bin/install.js +661 -0
- package/docs/getting-started.md +164 -0
- package/docs/module-guide.md +139 -0
- package/modules/drive/LICENSE +21 -0
- package/modules/drive/PAUL-VS-GSD.md +171 -0
- package/modules/drive/README.md +555 -0
- package/modules/drive/assets/terminal.svg +67 -0
- package/modules/drive/bin/install.js +210 -0
- package/modules/drive/integration.js +76 -0
- package/modules/drive/package.json +38 -0
- package/modules/drive/src/commands/add-phase.md +36 -0
- package/modules/drive/src/commands/apply.md +83 -0
- package/modules/drive/src/commands/assumptions.md +37 -0
- package/modules/drive/src/commands/audit.md +57 -0
- package/modules/drive/src/commands/complete-milestone.md +36 -0
- package/modules/drive/src/commands/config.md +175 -0
- package/modules/drive/src/commands/consider-issues.md +41 -0
- package/modules/drive/src/commands/discover.md +48 -0
- package/modules/drive/src/commands/discuss-milestone.md +33 -0
- package/modules/drive/src/commands/discuss.md +34 -0
- package/modules/drive/src/commands/flows.md +73 -0
- package/modules/drive/src/commands/handoff.md +201 -0
- package/modules/drive/src/commands/help.md +525 -0
- package/modules/drive/src/commands/init.md +54 -0
- package/modules/drive/src/commands/map-codebase.md +34 -0
- package/modules/drive/src/commands/milestone.md +34 -0
- package/modules/drive/src/commands/pause.md +44 -0
- package/modules/drive/src/commands/plan-fix.md +216 -0
- package/modules/drive/src/commands/plan.md +36 -0
- package/modules/drive/src/commands/progress.md +138 -0
- package/modules/drive/src/commands/register.md +29 -0
- package/modules/drive/src/commands/remove-phase.md +37 -0
- package/modules/drive/src/commands/research-phase.md +209 -0
- package/modules/drive/src/commands/research.md +47 -0
- package/modules/drive/src/commands/resume.md +49 -0
- package/modules/drive/src/commands/status.md +78 -0
- package/modules/drive/src/commands/unify.md +87 -0
- package/modules/drive/src/commands/verify.md +60 -0
- package/modules/drive/src/references/checkpoints.md +234 -0
- package/modules/drive/src/references/context-management.md +219 -0
- package/modules/drive/src/references/git-strategy.md +206 -0
- package/modules/drive/src/references/loop-phases.md +254 -0
- package/modules/drive/src/references/plan-format.md +263 -0
- package/modules/drive/src/references/quality-principles.md +152 -0
- package/modules/drive/src/references/research-quality-control.md +247 -0
- package/modules/drive/src/references/sonarqube-integration.md +244 -0
- package/modules/drive/src/references/specialized-workflow-integration.md +186 -0
- package/modules/drive/src/references/subagent-criteria.md +179 -0
- package/modules/drive/src/references/tdd.md +219 -0
- package/modules/drive/src/references/work-units.md +161 -0
- package/modules/drive/src/rules/commands.md +108 -0
- package/modules/drive/src/rules/references.md +107 -0
- package/modules/drive/src/rules/style.md +123 -0
- package/modules/drive/src/rules/templates.md +51 -0
- package/modules/drive/src/rules/workflows.md +133 -0
- package/modules/drive/src/templates/CONTEXT.md +88 -0
- package/modules/drive/src/templates/DEBUG.md +164 -0
- package/modules/drive/src/templates/DISCOVERY.md +148 -0
- package/modules/drive/src/templates/HANDOFF.md +77 -0
- package/modules/drive/src/templates/ISSUES.md +93 -0
- package/modules/drive/src/templates/MILESTONES.md +167 -0
- package/modules/drive/src/templates/PLAN.md +328 -0
- package/modules/drive/src/templates/PROJECT.md +219 -0
- package/modules/drive/src/templates/RESEARCH.md +130 -0
- package/modules/drive/src/templates/ROADMAP.md +328 -0
- package/modules/drive/src/templates/SPECIAL-FLOWS.md +70 -0
- package/modules/drive/src/templates/STATE.md +210 -0
- package/modules/drive/src/templates/SUMMARY.md +221 -0
- package/modules/drive/src/templates/UAT-ISSUES.md +139 -0
- package/modules/drive/src/templates/codebase/architecture.md +259 -0
- package/modules/drive/src/templates/codebase/concerns.md +329 -0
- package/modules/drive/src/templates/codebase/conventions.md +311 -0
- package/modules/drive/src/templates/codebase/integrations.md +284 -0
- package/modules/drive/src/templates/codebase/stack.md +190 -0
- package/modules/drive/src/templates/codebase/structure.md +287 -0
- package/modules/drive/src/templates/codebase/testing.md +484 -0
- package/modules/drive/src/templates/config.md +181 -0
- package/modules/drive/src/templates/milestone-archive.md +236 -0
- package/modules/drive/src/templates/milestone-context.md +190 -0
- package/modules/drive/src/templates/paul-json.md +147 -0
- package/modules/drive/src/vector-config/PAUL +26 -0
- package/modules/drive/src/vector-config/PAUL.manifest +11 -0
- package/modules/drive/src/workflows/apply-phase.md +393 -0
- package/modules/drive/src/workflows/audit-plan.md +344 -0
- package/modules/drive/src/workflows/complete-milestone.md +479 -0
- package/modules/drive/src/workflows/configure-special-flows.md +283 -0
- package/modules/drive/src/workflows/consider-issues.md +172 -0
- package/modules/drive/src/workflows/create-milestone.md +268 -0
- package/modules/drive/src/workflows/debug.md +292 -0
- package/modules/drive/src/workflows/discovery.md +187 -0
- package/modules/drive/src/workflows/discuss-milestone.md +245 -0
- package/modules/drive/src/workflows/discuss-phase.md +231 -0
- package/modules/drive/src/workflows/init-project.md +698 -0
- package/modules/drive/src/workflows/map-codebase.md +459 -0
- package/modules/drive/src/workflows/pause-work.md +259 -0
- package/modules/drive/src/workflows/phase-assumptions.md +181 -0
- package/modules/drive/src/workflows/plan-phase.md +385 -0
- package/modules/drive/src/workflows/quality-gate.md +263 -0
- package/modules/drive/src/workflows/register-manifest.md +107 -0
- package/modules/drive/src/workflows/research.md +241 -0
- package/modules/drive/src/workflows/resume-project.md +200 -0
- package/modules/drive/src/workflows/roadmap-management.md +334 -0
- package/modules/drive/src/workflows/transition-phase.md +368 -0
- package/modules/drive/src/workflows/unify-phase.md +290 -0
- package/modules/drive/src/workflows/verify-work.md +241 -0
- package/modules/forge/README.md +281 -0
- package/modules/forge/bin/install.js +200 -0
- package/modules/forge/package.json +32 -0
- package/modules/forge/skillsmith/rules/checklists-rules.md +42 -0
- package/modules/forge/skillsmith/rules/context-rules.md +43 -0
- package/modules/forge/skillsmith/rules/entry-point-rules.md +44 -0
- package/modules/forge/skillsmith/rules/frameworks-rules.md +43 -0
- package/modules/forge/skillsmith/rules/tasks-rules.md +52 -0
- package/modules/forge/skillsmith/rules/templates-rules.md +43 -0
- package/modules/forge/skillsmith/skillsmith.md +82 -0
- package/modules/forge/skillsmith/tasks/audit.md +277 -0
- package/modules/forge/skillsmith/tasks/discover.md +145 -0
- package/modules/forge/skillsmith/tasks/distill.md +276 -0
- package/modules/forge/skillsmith/tasks/scaffold.md +349 -0
- package/modules/forge/specs/checklists.md +193 -0
- package/modules/forge/specs/context.md +223 -0
- package/modules/forge/specs/entry-point.md +320 -0
- package/modules/forge/specs/frameworks.md +228 -0
- package/modules/forge/specs/rules.md +245 -0
- package/modules/forge/specs/tasks.md +344 -0
- package/modules/forge/specs/templates.md +335 -0
- package/modules/forge/terminal.svg +70 -0
- package/modules/ignition/README.md +245 -0
- package/modules/ignition/bin/install.js +184 -0
- package/modules/ignition/checklists/planning-quality.md +55 -0
- package/modules/ignition/data/application/config.md +21 -0
- package/modules/ignition/data/application/guide.md +51 -0
- package/modules/ignition/data/application/skill-loadout.md +11 -0
- package/modules/ignition/data/campaign/config.md +18 -0
- package/modules/ignition/data/campaign/guide.md +36 -0
- package/modules/ignition/data/campaign/skill-loadout.md +10 -0
- package/modules/ignition/data/client/config.md +18 -0
- package/modules/ignition/data/client/guide.md +36 -0
- package/modules/ignition/data/client/skill-loadout.md +11 -0
- package/modules/ignition/data/utility/config.md +18 -0
- package/modules/ignition/data/utility/guide.md +31 -0
- package/modules/ignition/data/utility/skill-loadout.md +8 -0
- package/modules/ignition/data/workflow/config.md +19 -0
- package/modules/ignition/data/workflow/guide.md +41 -0
- package/modules/ignition/data/workflow/skill-loadout.md +10 -0
- package/modules/ignition/integration.js +54 -0
- package/modules/ignition/package.json +35 -0
- package/modules/ignition/seed.md +81 -0
- package/modules/ignition/tasks/add-type.md +164 -0
- package/modules/ignition/tasks/graduate.md +182 -0
- package/modules/ignition/tasks/ideate.md +221 -0
- package/modules/ignition/tasks/launch.md +137 -0
- package/modules/ignition/tasks/status.md +71 -0
- package/modules/ignition/templates/planning-application.md +193 -0
- package/modules/ignition/templates/planning-campaign.md +138 -0
- package/modules/ignition/templates/planning-client.md +149 -0
- package/modules/ignition/templates/planning-utility.md +112 -0
- package/modules/ignition/templates/planning-workflow.md +125 -0
- package/modules/ignition/terminal.svg +74 -0
- package/modules/mission-control/CONTEXT-CONTINUITY-SPEC.md +293 -0
- package/modules/mission-control/CONTEXT-ENGINEERING-GUIDE.md +282 -0
- package/modules/mission-control/README.md +91 -0
- package/modules/mission-control/assets/terminal.svg +80 -0
- package/modules/mission-control/examples/entities.example.json +133 -0
- package/modules/mission-control/examples/projects.example.json +318 -0
- package/modules/mission-control/examples/state.example.json +183 -0
- package/modules/mission-control/examples/vector.example.json +245 -0
- package/modules/mission-control/mission-control/checklists/install-verification.md +46 -0
- package/modules/mission-control/mission-control/frameworks/framework-registry.md +83 -0
- package/modules/mission-control/mission-control/mission-control.md +83 -0
- package/modules/mission-control/mission-control/tasks/insights.md +73 -0
- package/modules/mission-control/mission-control/tasks/install.md +194 -0
- package/modules/mission-control/mission-control/tasks/status.md +125 -0
- package/modules/mission-control/schemas/entities.schema.json +89 -0
- package/modules/mission-control/schemas/projects.schema.json +221 -0
- package/modules/mission-control/schemas/state.schema.json +108 -0
- package/modules/mission-control/schemas/vector.schema.json +200 -0
- package/modules/momentum/README.md +678 -0
- package/modules/momentum/bin/install.js +563 -0
- package/modules/momentum/integration.js +131 -0
- package/modules/momentum/package.json +42 -0
- package/modules/momentum/schemas/entities.schema.json +89 -0
- package/modules/momentum/schemas/projects.schema.json +221 -0
- package/modules/momentum/schemas/state.schema.json +108 -0
- package/modules/momentum/src/commands/audit-claude-md.md +31 -0
- package/modules/momentum/src/commands/audit.md +33 -0
- package/modules/momentum/src/commands/groom.md +35 -0
- package/modules/momentum/src/commands/history.md +27 -0
- package/modules/momentum/src/commands/pulse.md +33 -0
- package/modules/momentum/src/commands/scaffold.md +33 -0
- package/modules/momentum/src/commands/status.md +28 -0
- package/modules/momentum/src/commands/surface-convert.md +35 -0
- package/modules/momentum/src/commands/surface-create.md +34 -0
- package/modules/momentum/src/commands/surface-list.md +27 -0
- package/modules/momentum/src/commands/vector-hygiene.md +33 -0
- package/modules/momentum/src/framework/context/momentum-principles.md +71 -0
- package/modules/momentum/src/framework/frameworks/audit-strategies.md +53 -0
- package/modules/momentum/src/framework/frameworks/satellite-registration.md +44 -0
- package/modules/momentum/src/framework/tasks/audit-claude-md.md +68 -0
- package/modules/momentum/src/framework/tasks/audit.md +64 -0
- package/modules/momentum/src/framework/tasks/groom.md +164 -0
- package/modules/momentum/src/framework/tasks/history.md +34 -0
- package/modules/momentum/src/framework/tasks/pulse.md +83 -0
- package/modules/momentum/src/framework/tasks/scaffold.md +202 -0
- package/modules/momentum/src/framework/tasks/status.md +35 -0
- package/modules/momentum/src/framework/tasks/surface-convert.md +143 -0
- package/modules/momentum/src/framework/tasks/surface-create.md +184 -0
- package/modules/momentum/src/framework/tasks/surface-list.md +42 -0
- package/modules/momentum/src/framework/tasks/vector-hygiene.md +160 -0
- package/modules/momentum/src/framework/templates/workspace-json.md +96 -0
- package/modules/momentum/src/hooks/_template.py +129 -0
- package/modules/momentum/src/hooks/active-hook.py +178 -0
- package/modules/momentum/src/hooks/backlog-hook.py +115 -0
- package/modules/momentum/src/hooks/mission-control-insights.py +169 -0
- package/modules/momentum/src/hooks/momentum-pulse-check.py +351 -0
- package/modules/momentum/src/hooks/operator.py +53 -0
- package/modules/momentum/src/hooks/psmm-injector.py +67 -0
- package/modules/momentum/src/hooks/satellite-detection.py +248 -0
- package/modules/momentum/src/packages/momentum-mcp/index.js +119 -0
- package/modules/momentum/src/packages/momentum-mcp/package.json +10 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/entities.js +226 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/operator.js +106 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/projects.js +322 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/psmm.js +206 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/state.js +199 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/surfaces.js +404 -0
- package/modules/momentum/src/skill/momentum.md +111 -0
- package/modules/momentum/src/tasks/groom.md +164 -0
- package/modules/momentum/src/templates/operator.json +66 -0
- package/modules/momentum/src/templates/workspace.json +111 -0
- package/modules/momentum/terminal.svg +77 -0
- package/modules/radar/README.md +1552 -0
- package/modules/radar/commands/audit.md +233 -0
- package/modules/radar/commands/guardrails.md +194 -0
- package/modules/radar/commands/init.md +207 -0
- package/modules/radar/commands/playbook.md +176 -0
- package/modules/radar/commands/remediate.md +156 -0
- package/modules/radar/commands/report.md +172 -0
- package/modules/radar/commands/resume.md +176 -0
- package/modules/radar/commands/status.md +148 -0
- package/modules/radar/commands/transform.md +205 -0
- package/modules/radar/commands/validate.md +177 -0
- package/modules/radar/docs/ARCHITECTURE.md +336 -0
- package/modules/radar/docs/GETTING-STARTED.md +287 -0
- package/modules/radar/docs/standards/agents.md +197 -0
- package/modules/radar/docs/standards/commands.md +250 -0
- package/modules/radar/docs/standards/domains.md +191 -0
- package/modules/radar/docs/standards/personas.md +211 -0
- package/modules/radar/docs/standards/rules.md +218 -0
- package/modules/radar/docs/standards/runtime.md +445 -0
- package/modules/radar/docs/standards/schemas.md +269 -0
- package/modules/radar/docs/standards/tools.md +273 -0
- package/modules/radar/docs/standards/workflows.md +254 -0
- package/modules/radar/docs/terminal.svg +72 -0
- package/modules/radar/docs/validation/convention-compliance-report.md +183 -0
- package/modules/radar/docs/validation/cross-reference-report.md +195 -0
- package/modules/radar/docs/validation/validation-summary.md +118 -0
- package/modules/radar/docs/validation/version-manifest.yaml +363 -0
- package/modules/radar/install.sh +711 -0
- package/modules/radar/integration.js +53 -0
- package/modules/radar/src/core/agents/architect.md +25 -0
- package/modules/radar/src/core/agents/compliance-officer.md +25 -0
- package/modules/radar/src/core/agents/data-engineer.md +25 -0
- package/modules/radar/src/core/agents/devils-advocate.md +22 -0
- package/modules/radar/src/core/agents/performance-engineer.md +25 -0
- package/modules/radar/src/core/agents/principal-engineer.md +23 -0
- package/modules/radar/src/core/agents/reality-gap-analyst.md +22 -0
- package/modules/radar/src/core/agents/security-engineer.md +25 -0
- package/modules/radar/src/core/agents/senior-app-engineer.md +25 -0
- package/modules/radar/src/core/agents/sre.md +25 -0
- package/modules/radar/src/core/agents/staff-engineer.md +23 -0
- package/modules/radar/src/core/agents/test-engineer.md +25 -0
- package/modules/radar/src/core/personas/architect.md +111 -0
- package/modules/radar/src/core/personas/compliance-officer.md +104 -0
- package/modules/radar/src/core/personas/data-engineer.md +113 -0
- package/modules/radar/src/core/personas/devils-advocate.md +105 -0
- package/modules/radar/src/core/personas/performance-engineer.md +119 -0
- package/modules/radar/src/core/personas/principal-engineer.md +119 -0
- package/modules/radar/src/core/personas/reality-gap-analyst.md +111 -0
- package/modules/radar/src/core/personas/security-engineer.md +108 -0
- package/modules/radar/src/core/personas/senior-app-engineer.md +111 -0
- package/modules/radar/src/core/personas/sre.md +117 -0
- package/modules/radar/src/core/personas/staff-engineer.md +109 -0
- package/modules/radar/src/core/personas/test-engineer.md +109 -0
- package/modules/radar/src/core/workflows/disagreement-resolution.md +183 -0
- package/modules/radar/src/core/workflows/phase-0-context.md +148 -0
- package/modules/radar/src/core/workflows/phase-1-reconnaissance.md +169 -0
- package/modules/radar/src/core/workflows/phase-2-domain-audits.md +190 -0
- package/modules/radar/src/core/workflows/phase-3-cross-domain.md +177 -0
- package/modules/radar/src/core/workflows/phase-4-adversarial-review.md +165 -0
- package/modules/radar/src/core/workflows/phase-5-report.md +189 -0
- package/modules/radar/src/core/workflows/phase-checkpoint.md +222 -0
- package/modules/radar/src/core/workflows/session-handoff.md +152 -0
- package/modules/radar/src/domains/00-context.md +201 -0
- package/modules/radar/src/domains/01-architecture.md +248 -0
- package/modules/radar/src/domains/02-data.md +224 -0
- package/modules/radar/src/domains/03-correctness.md +230 -0
- package/modules/radar/src/domains/04-security.md +274 -0
- package/modules/radar/src/domains/05-compliance.md +228 -0
- package/modules/radar/src/domains/06-testing.md +228 -0
- package/modules/radar/src/domains/07-reliability.md +246 -0
- package/modules/radar/src/domains/08-performance.md +247 -0
- package/modules/radar/src/domains/09-maintainability.md +271 -0
- package/modules/radar/src/domains/10-operability.md +250 -0
- package/modules/radar/src/domains/11-change-risk.md +246 -0
- package/modules/radar/src/domains/12-team-risk.md +221 -0
- package/modules/radar/src/domains/13-risk-synthesis.md +202 -0
- package/modules/radar/src/rules/agent-boundaries.md +78 -0
- package/modules/radar/src/rules/disagreement-protocol.md +76 -0
- package/modules/radar/src/rules/epistemic-hygiene.md +78 -0
- package/modules/radar/src/schemas/confidence.md +185 -0
- package/modules/radar/src/schemas/disagreement.md +238 -0
- package/modules/radar/src/schemas/finding.md +287 -0
- package/modules/radar/src/schemas/report-section.md +150 -0
- package/modules/radar/src/schemas/signal.md +108 -0
- package/modules/radar/src/tools/checkov.md +463 -0
- package/modules/radar/src/tools/git-history.md +581 -0
- package/modules/radar/src/tools/gitleaks.md +447 -0
- package/modules/radar/src/tools/grype.md +611 -0
- package/modules/radar/src/tools/semgrep.md +378 -0
- package/modules/radar/src/tools/sonarqube.md +550 -0
- package/modules/radar/src/tools/syft.md +539 -0
- package/modules/radar/src/tools/trivy.md +439 -0
- package/modules/radar/src/transform/agents/change-risk-modeler.md +24 -0
- package/modules/radar/src/transform/agents/execution-validator.md +24 -0
- package/modules/radar/src/transform/agents/guardrail-generator.md +24 -0
- package/modules/radar/src/transform/agents/pedagogy-agent.md +24 -0
- package/modules/radar/src/transform/agents/remediation-architect.md +24 -0
- package/modules/radar/src/transform/personas/change-risk-modeler.md +95 -0
- package/modules/radar/src/transform/personas/execution-validator.md +95 -0
- package/modules/radar/src/transform/personas/guardrail-generator.md +103 -0
- package/modules/radar/src/transform/personas/pedagogy-agent.md +105 -0
- package/modules/radar/src/transform/personas/remediation-architect.md +95 -0
- package/modules/radar/src/transform/rules/change-risk-rules.md +87 -0
- package/modules/radar/src/transform/rules/safety-governance.md +87 -0
- package/modules/radar/src/transform/schemas/change-risk.md +139 -0
- package/modules/radar/src/transform/schemas/intervention-level.md +207 -0
- package/modules/radar/src/transform/schemas/playbook.md +205 -0
- package/modules/radar/src/transform/schemas/verification-plan.md +134 -0
- package/modules/radar/src/transform/workflows/phase-6-remediation.md +148 -0
- package/modules/radar/src/transform/workflows/phase-7-risk-validation.md +161 -0
- package/modules/radar/src/transform/workflows/phase-8-execution-planning.md +159 -0
- package/modules/radar/src/transform/workflows/transform-safety.md +158 -0
- package/modules/vector/.vector-template/sessions/.gitkeep +0 -0
- package/modules/vector/.vector-template/vector.json +72 -0
- package/modules/vector/AUDIT-CLAUDEMD.md +154 -0
- package/modules/vector/INSTALL.md +185 -0
- package/modules/vector/LICENSE +21 -0
- package/modules/vector/README.md +409 -0
- package/modules/vector/VECTOR-BLOCK.md +57 -0
- package/modules/vector/assets/terminal.svg +68 -0
- package/modules/vector/bin/install.js +455 -0
- package/modules/vector/bin/migrate-v1-to-v2.sh +492 -0
- package/modules/vector/commands/help.md +46 -0
- package/modules/vector/hooks/vector-hook.py +775 -0
- package/modules/vector/mcp/index.js +118 -0
- package/modules/vector/mcp/package.json +10 -0
- package/modules/vector/mcp/tools/decisions.js +269 -0
- package/modules/vector/mcp/tools/domains.js +361 -0
- package/modules/vector/mcp/tools/staging.js +252 -0
- package/modules/vector/mcp/tools/vector-json.js +647 -0
- package/modules/vector/package.json +38 -0
- package/modules/vector/schemas/vector.schema.json +237 -0
- package/package.json +39 -0
- package/shared/branding/branding.js +70 -0
- package/shared/config/defaults.json +59 -0
- package/shared/events/README.md +175 -0
- package/shared/events/event-bus.js +134 -0
- package/shared/events/event_bus.py +255 -0
- package/shared/events/integrations.js +161 -0
- package/shared/events/schemas/audit-complete.schema.json +21 -0
- package/shared/events/schemas/phase-progress.schema.json +23 -0
- package/shared/events/schemas/plan-created.schema.json +21 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const os = require('os');
|
|
6
|
+
|
|
7
|
+
// Colors
|
|
8
|
+
const green = '\x1b[32m';
|
|
9
|
+
const cyan = '\x1b[36m';
|
|
10
|
+
const yellow = '\x1b[33m';
|
|
11
|
+
const dim = '\x1b[2m';
|
|
12
|
+
const reset = '\x1b[0m';
|
|
13
|
+
|
|
14
|
+
// Get version from package.json
|
|
15
|
+
const pkg = require('../package.json');
|
|
16
|
+
|
|
17
|
+
const banner = `
|
|
18
|
+
${cyan} ███████╗██╗ ██╗██╗██╗ ██╗ ███████╗███╗ ███╗██╗████████╗██╗ ██╗
|
|
19
|
+
██╔════╝██║ ██╔╝██║██║ ██║ ██╔════╝████╗ ████║██║╚══██╔══╝██║ ██║
|
|
20
|
+
███████╗█████╔╝ ██║██║ ██║ ███████╗██╔████╔██║██║ ██║ ███████║
|
|
21
|
+
╚════██║██╔═██╗ ██║██║ ██║ ╚════██║██║╚██╔╝██║██║ ██║ ██╔══██║
|
|
22
|
+
███████║██║ ██╗██║███████╗███████╗███████║██║ ╚═╝ ██║██║ ██║ ██║ ██║
|
|
23
|
+
╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝${reset}
|
|
24
|
+
|
|
25
|
+
Forge ${dim}v${pkg.version}${reset}
|
|
26
|
+
Build consistent Claude Code skills
|
|
27
|
+
`;
|
|
28
|
+
|
|
29
|
+
// Parse args
|
|
30
|
+
const args = process.argv.slice(2);
|
|
31
|
+
const hasHelp = args.includes('--help') || args.includes('-h');
|
|
32
|
+
const hasLocal = args.includes('--local') || args.includes('-l');
|
|
33
|
+
|
|
34
|
+
// Parse --config-dir argument
|
|
35
|
+
function parseConfigDirArg() {
|
|
36
|
+
const idx = args.findIndex(arg => arg === '--config-dir' || arg === '-c');
|
|
37
|
+
if (idx !== -1) {
|
|
38
|
+
const nextArg = args[idx + 1];
|
|
39
|
+
if (!nextArg || nextArg.startsWith('-')) {
|
|
40
|
+
console.error(` ${yellow}--config-dir requires a path argument${reset}`);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
return nextArg;
|
|
44
|
+
}
|
|
45
|
+
const configDirArg = args.find(arg => arg.startsWith('--config-dir=') || arg.startsWith('-c='));
|
|
46
|
+
if (configDirArg) {
|
|
47
|
+
return configDirArg.split('=')[1];
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Expand ~ to home directory
|
|
54
|
+
*/
|
|
55
|
+
function expandTilde(filePath) {
|
|
56
|
+
if (filePath && filePath.startsWith('~/')) {
|
|
57
|
+
return path.join(os.homedir(), filePath.slice(2));
|
|
58
|
+
}
|
|
59
|
+
return filePath;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Recursively copy directory, skipping excluded dirs
|
|
64
|
+
*/
|
|
65
|
+
function copyDir(srcDir, destDir, skipDirs = []) {
|
|
66
|
+
fs.mkdirSync(destDir, { recursive: true });
|
|
67
|
+
const entries = fs.readdirSync(srcDir, { withFileTypes: true });
|
|
68
|
+
for (const entry of entries) {
|
|
69
|
+
if (skipDirs.includes(entry.name)) continue;
|
|
70
|
+
const srcPath = path.join(srcDir, entry.name);
|
|
71
|
+
const destPath = path.join(destDir, entry.name);
|
|
72
|
+
if (entry.isDirectory()) {
|
|
73
|
+
copyDir(srcPath, destPath, skipDirs);
|
|
74
|
+
} else {
|
|
75
|
+
fs.copyFileSync(srcPath, destPath);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Count files recursively
|
|
82
|
+
*/
|
|
83
|
+
function countFiles(dir, ext) {
|
|
84
|
+
let count = 0;
|
|
85
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
86
|
+
for (const entry of entries) {
|
|
87
|
+
const fullPath = path.join(dir, entry.name);
|
|
88
|
+
if (entry.isDirectory()) {
|
|
89
|
+
count += countFiles(fullPath, ext);
|
|
90
|
+
} else if (!ext || entry.name.endsWith(ext)) {
|
|
91
|
+
count++;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return count;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
console.log(banner);
|
|
98
|
+
|
|
99
|
+
// Show help
|
|
100
|
+
if (hasHelp) {
|
|
101
|
+
console.log(` ${yellow}Usage:${reset} npx @accel/forge [options]
|
|
102
|
+
|
|
103
|
+
${yellow}Options:${reset}
|
|
104
|
+
${cyan}-l, --local${reset} Install to ./.claude/commands/ instead of global
|
|
105
|
+
${cyan}-c, --config-dir <path>${reset} Specify custom Claude config directory
|
|
106
|
+
${cyan}-h, --help${reset} Show this help message
|
|
107
|
+
|
|
108
|
+
${yellow}Examples:${reset}
|
|
109
|
+
${dim}# Install globally (default) — available in all workspaces${reset}
|
|
110
|
+
npx @accel/forge
|
|
111
|
+
|
|
112
|
+
${dim}# Install to current project only${reset}
|
|
113
|
+
npx @accel/forge --local
|
|
114
|
+
|
|
115
|
+
${yellow}What gets installed:${reset}
|
|
116
|
+
${cyan}commands/forge/${reset}
|
|
117
|
+
forge.md Entry point (routing + persona)
|
|
118
|
+
tasks/ 4 task files (discover, scaffold, distill, audit)
|
|
119
|
+
rules/ 6 authoring rule files
|
|
120
|
+
templates/ Skill spec output template
|
|
121
|
+
${cyan}forge-specs/${reset}
|
|
122
|
+
7 syntax specification files (entry-point, tasks, templates, etc.)
|
|
123
|
+
`);
|
|
124
|
+
process.exit(0);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Determine install target
|
|
128
|
+
const explicitConfigDir = parseConfigDirArg();
|
|
129
|
+
const configDir = expandTilde(explicitConfigDir) || expandTilde(process.env.CLAUDE_CONFIG_DIR);
|
|
130
|
+
const globalDir = configDir || path.join(os.homedir(), '.claude');
|
|
131
|
+
const claudeDir = hasLocal ? path.join(process.cwd(), '.claude') : globalDir;
|
|
132
|
+
const skillDest = path.join(claudeDir, 'commands', 'forge');
|
|
133
|
+
const specsDest = path.join(claudeDir, 'forge-specs');
|
|
134
|
+
|
|
135
|
+
const locationLabel = hasLocal
|
|
136
|
+
? claudeDir.replace(process.cwd(), '.') + '/'
|
|
137
|
+
: claudeDir.replace(os.homedir(), '~') + '/';
|
|
138
|
+
|
|
139
|
+
// Check if already installed
|
|
140
|
+
if (fs.existsSync(skillDest)) {
|
|
141
|
+
console.log(` ${yellow}Existing installation found${reset}`);
|
|
142
|
+
console.log(` Updating...\n`);
|
|
143
|
+
fs.rmSync(skillDest, { recursive: true, force: true });
|
|
144
|
+
}
|
|
145
|
+
if (fs.existsSync(specsDest)) {
|
|
146
|
+
fs.rmSync(specsDest, { recursive: true, force: true });
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
console.log(` Installing to ${cyan}${locationLabel}${reset}\n`);
|
|
150
|
+
|
|
151
|
+
// Source directory (package root)
|
|
152
|
+
const src = path.join(__dirname, '..');
|
|
153
|
+
const skillSrc = path.join(src, 'forge');
|
|
154
|
+
|
|
155
|
+
// Copy entry point
|
|
156
|
+
fs.mkdirSync(skillDest, { recursive: true });
|
|
157
|
+
fs.copyFileSync(path.join(skillSrc, 'forge.md'), path.join(skillDest, 'forge.md'));
|
|
158
|
+
console.log(` ${green}+${reset} forge.md ${dim}(entry point)${reset}`);
|
|
159
|
+
|
|
160
|
+
// Copy tasks
|
|
161
|
+
copyDir(path.join(skillSrc, 'tasks'), path.join(skillDest, 'tasks'));
|
|
162
|
+
const taskCount = countFiles(path.join(skillSrc, 'tasks'), '.md');
|
|
163
|
+
console.log(` ${green}+${reset} tasks/ ${dim}(${taskCount} task files)${reset}`);
|
|
164
|
+
|
|
165
|
+
// Copy rules
|
|
166
|
+
copyDir(path.join(skillSrc, 'rules'), path.join(skillDest, 'rules'));
|
|
167
|
+
const ruleCount = countFiles(path.join(skillSrc, 'rules'), '.md');
|
|
168
|
+
console.log(` ${green}+${reset} rules/ ${dim}(${ruleCount} authoring rules)${reset}`);
|
|
169
|
+
|
|
170
|
+
// Copy templates
|
|
171
|
+
copyDir(path.join(skillSrc, 'templates'), path.join(skillDest, 'templates'));
|
|
172
|
+
console.log(` ${green}+${reset} templates/ ${dim}(skill spec template)${reset}`);
|
|
173
|
+
|
|
174
|
+
// Copy specs to separate location (referenced by tasks via @../specs/)
|
|
175
|
+
const specsSrc = path.join(src, 'specs');
|
|
176
|
+
copyDir(specsSrc, specsDest);
|
|
177
|
+
const specCount = countFiles(specsSrc, '.md');
|
|
178
|
+
console.log(` ${green}+${reset} specs/ ${dim}(${specCount} syntax specifications)${reset}`);
|
|
179
|
+
|
|
180
|
+
// Rewrite @../specs/ references in task files to point to installed specs location
|
|
181
|
+
const tasksDir = path.join(skillDest, 'tasks');
|
|
182
|
+
const specRelPath = path.relative(tasksDir, specsDest).replace(/\\/g, '/');
|
|
183
|
+
const taskFiles = fs.readdirSync(tasksDir).filter(f => f.endsWith('.md'));
|
|
184
|
+
for (const file of taskFiles) {
|
|
185
|
+
const filePath = path.join(tasksDir, file);
|
|
186
|
+
let content = fs.readFileSync(filePath, 'utf8');
|
|
187
|
+
content = content.replace(/@\.\.\/specs\//g, `@${specRelPath}/`);
|
|
188
|
+
fs.writeFileSync(filePath, content);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// Also rewrite refs in the entry point routing section
|
|
192
|
+
const entryPath = path.join(skillDest, 'forge.md');
|
|
193
|
+
let entryContent = fs.readFileSync(entryPath, 'utf8');
|
|
194
|
+
const specRelFromEntry = path.relative(skillDest, specsDest).replace(/\\/g, '/');
|
|
195
|
+
entryContent = entryContent.replace(/@specs\//g, `@${specRelFromEntry}/`);
|
|
196
|
+
fs.writeFileSync(entryPath, entryContent);
|
|
197
|
+
|
|
198
|
+
console.log(`
|
|
199
|
+
${green}Done!${reset} Open Claude Code and type ${cyan}/forge${reset} to start.
|
|
200
|
+
`);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@accel/forge",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Build consistent Claude Code skills using standardized syntax and guided workflows",
|
|
5
|
+
"bin": {
|
|
6
|
+
"forge": "bin/install.js"
|
|
7
|
+
},
|
|
8
|
+
"files": [
|
|
9
|
+
"bin",
|
|
10
|
+
"forge",
|
|
11
|
+
"specs",
|
|
12
|
+
"README.md",
|
|
13
|
+
"terminal.svg"
|
|
14
|
+
],
|
|
15
|
+
"keywords": [
|
|
16
|
+
"claude",
|
|
17
|
+
"claude-code",
|
|
18
|
+
"ai",
|
|
19
|
+
"skills",
|
|
20
|
+
"scaffolding",
|
|
21
|
+
"forge",
|
|
22
|
+
"drive",
|
|
23
|
+
"ignition"
|
|
24
|
+
],
|
|
25
|
+
"author": "Acceleration Guy",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "git+https://github.com/accelerationguy/forge.git"
|
|
30
|
+
},
|
|
31
|
+
"homepage": "https://github.com/accelerationguy/forge#readme"
|
|
32
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "skills/*/checklists/*.md"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Checklists Rules
|
|
7
|
+
|
|
8
|
+
Authoring rules for checklist files. Validate against these when generating or reviewing `checklists/*.md` files.
|
|
9
|
+
|
|
10
|
+
## Must Have
|
|
11
|
+
|
|
12
|
+
### Structure
|
|
13
|
+
1. **Header** — `# [Name] Checklist`
|
|
14
|
+
2. **Purpose** — One-line description: `**Purpose:** [what this checklist validates]`
|
|
15
|
+
3. **Categories** — Grouped `- [ ]` items organized by concern
|
|
16
|
+
4. **Scoring** (optional) — How to interpret results
|
|
17
|
+
|
|
18
|
+
### Item Requirements
|
|
19
|
+
- Every item uses `- [ ]` checkbox format
|
|
20
|
+
- Each item is independently pass/fail verifiable
|
|
21
|
+
- Items are specific enough to evaluate without interpretation
|
|
22
|
+
- Group related items under `##` category headers
|
|
23
|
+
|
|
24
|
+
### No Frontmatter
|
|
25
|
+
Checklists do NOT use YAML frontmatter. Content starts with a header.
|
|
26
|
+
|
|
27
|
+
## Naming Conventions
|
|
28
|
+
|
|
29
|
+
| Element | Convention | Example |
|
|
30
|
+
|---------|-----------|---------|
|
|
31
|
+
| Checklist file | kebab-case, named for what it validates | `offer-quality.md`, `copy-review.md` |
|
|
32
|
+
| Directory | Always `checklists/` | `skills/revops-expert/checklists/` |
|
|
33
|
+
|
|
34
|
+
## Anti-Patterns
|
|
35
|
+
|
|
36
|
+
| Pattern | Why It's Wrong |
|
|
37
|
+
|---------|---------------|
|
|
38
|
+
| Vague criteria ("looks good") | Must be pass/fail — "Price anchored against value, not cost" |
|
|
39
|
+
| Mixing instructions with validation | Checklists validate, they don't instruct — that's what tasks do |
|
|
40
|
+
| Uncategorized flat list | Group by concern for readability and focused review |
|
|
41
|
+
| Items requiring subjective judgment | Each item should be objectively verifiable |
|
|
42
|
+
| No purpose line | Reader doesn't know what this checklist is for |
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "skills/*/context/*.md"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Context Rules
|
|
7
|
+
|
|
8
|
+
Authoring rules for context files. Validate against these when generating or reviewing `context/*.md` files.
|
|
9
|
+
|
|
10
|
+
## Must Have
|
|
11
|
+
|
|
12
|
+
### Structure
|
|
13
|
+
1. **Header** — `# [Name]` (e.g., `# User Profile`, `# Business Profile`)
|
|
14
|
+
2. **Standard sections** — Based on context subtype (see below)
|
|
15
|
+
3. **Placeholder values** — Use `[Not yet captured]` for empty fields during scaffolding
|
|
16
|
+
|
|
17
|
+
### Context Subtypes
|
|
18
|
+
- **User Profile** — Identity, Role, Company, Preferences
|
|
19
|
+
- **Business Profile** — Business Name, Industry, Services, Target Audience
|
|
20
|
+
- **Custom** — Domain-specific state (e.g., pipeline status, inventory)
|
|
21
|
+
|
|
22
|
+
### Mutability
|
|
23
|
+
Context is the ONLY mutable file type in a skill. All other files (entry points, tasks, frameworks, templates, checklists) are stable reference. Context files are updated during skill use as the user provides information.
|
|
24
|
+
|
|
25
|
+
### No Frontmatter
|
|
26
|
+
Context files do NOT use YAML frontmatter. They are plain markdown with standard sections.
|
|
27
|
+
|
|
28
|
+
## Naming Conventions
|
|
29
|
+
|
|
30
|
+
| Element | Convention | Example |
|
|
31
|
+
|---------|-----------|---------|
|
|
32
|
+
| Context file | kebab-case, named for what it stores | `user-profile.md`, `business-profile.md` |
|
|
33
|
+
| Directory | Always `context/` | `skills/revops-expert/context/` |
|
|
34
|
+
|
|
35
|
+
## Anti-Patterns
|
|
36
|
+
|
|
37
|
+
| Pattern | Why It's Wrong |
|
|
38
|
+
|---------|---------------|
|
|
39
|
+
| Storing process state | Context stores identity/profile, not workflow progress |
|
|
40
|
+
| Config in context | Settings belong in frontmatter or environment, not context files |
|
|
41
|
+
| No placeholder values | Empty files give no guidance on what to capture |
|
|
42
|
+
| Overly structured (YAML in markdown) | Keep it simple — headers and bullet points |
|
|
43
|
+
| Treating context as read-only | Context is meant to be updated — that's its purpose |
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "skills/*/*.md"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Entry Point Rules
|
|
7
|
+
|
|
8
|
+
Authoring rules for skill entry points. Validate against these when generating or reviewing `{skill-name}/{skill-name}.md` files.
|
|
9
|
+
|
|
10
|
+
## Must Have
|
|
11
|
+
|
|
12
|
+
### YAML Frontmatter
|
|
13
|
+
- `name` — kebab-case, matches directory name
|
|
14
|
+
- `type` — one of: `suite`, `standalone`, `task-only`
|
|
15
|
+
- `version` — semver format, start at `0.1.0`
|
|
16
|
+
- `category` — domain grouping (e.g., operations, content, development)
|
|
17
|
+
- `description` — one-line, action-oriented summary
|
|
18
|
+
|
|
19
|
+
### XML Sections (all 5, in order)
|
|
20
|
+
1. `<activation>` — What, When to Use, Not For
|
|
21
|
+
2. `<persona>` — Role, Style, Expertise
|
|
22
|
+
3. `<commands>` — Command table (omit for task-only)
|
|
23
|
+
4. `<routing>` — Always Load, Load on Command, Load on Demand
|
|
24
|
+
5. `<greeting>` — Brief intro, available actions, prompt
|
|
25
|
+
|
|
26
|
+
## Naming Conventions
|
|
27
|
+
|
|
28
|
+
| Element | Convention | Example |
|
|
29
|
+
|---------|-----------|---------|
|
|
30
|
+
| Directory | kebab-case | `revops-expert/` |
|
|
31
|
+
| Entry point file | Matches directory | `revops-expert.md` |
|
|
32
|
+
| Slash command | Matches directory | `/revops-expert` |
|
|
33
|
+
|
|
34
|
+
## Anti-Patterns
|
|
35
|
+
|
|
36
|
+
| Pattern | Why It's Wrong |
|
|
37
|
+
|---------|---------------|
|
|
38
|
+
| Process logic in entry point | Entry points route to tasks — they don't execute workflows |
|
|
39
|
+
| Generic XML tags (`<section>`) | Use semantic tags: `<activation>`, `<persona>`, `<routing>` |
|
|
40
|
+
| Missing "Not For" in activation | Skill tries to do everything without scope boundaries |
|
|
41
|
+
| Version stuck at 1.0.0 | Start at 0.1.0, bump meaningfully |
|
|
42
|
+
| Vague persona | "Helpful assistant" — define role, style, expertise concretely |
|
|
43
|
+
| Loading everything always | Use "Load on Demand" for conditional files to save context |
|
|
44
|
+
| No greeting | User gets no orientation on what's available |
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "skills/*/frameworks/*.md"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Frameworks Rules
|
|
7
|
+
|
|
8
|
+
Authoring rules for framework files. Validate against these when generating or reviewing `frameworks/*.md` files.
|
|
9
|
+
|
|
10
|
+
## Must Have
|
|
11
|
+
|
|
12
|
+
### Structure
|
|
13
|
+
1. **Purpose section** — What this framework explains and when to reference it
|
|
14
|
+
2. **Core Concepts** — The knowledge itself, organized by topic/component
|
|
15
|
+
3. **Examples** — Concrete illustrations (good vs bad when applicable)
|
|
16
|
+
|
|
17
|
+
### Optional Sections
|
|
18
|
+
- Outer XML container matching the concept (adds semantic clarity)
|
|
19
|
+
- **Anti-Patterns** — What to avoid and WHY
|
|
20
|
+
- **Sources** — Attribution if from a book, course, or methodology
|
|
21
|
+
|
|
22
|
+
### No Frontmatter
|
|
23
|
+
Frameworks do NOT use YAML frontmatter. They are read-only knowledge, not executable artifacts.
|
|
24
|
+
|
|
25
|
+
### Teaching Orientation
|
|
26
|
+
Frameworks teach — they don't command. Content should explain concepts and provide examples, not give step-by-step instructions (that's what tasks do).
|
|
27
|
+
|
|
28
|
+
## Naming Conventions
|
|
29
|
+
|
|
30
|
+
| Element | Convention | Example |
|
|
31
|
+
|---------|-----------|---------|
|
|
32
|
+
| Framework file | kebab-case, named for the concept | `hormozi-value-equation.md` |
|
|
33
|
+
| Directory | Always `frameworks/` | `skills/revops-expert/frameworks/` |
|
|
34
|
+
|
|
35
|
+
## Anti-Patterns
|
|
36
|
+
|
|
37
|
+
| Pattern | Why It's Wrong |
|
|
38
|
+
|---------|---------------|
|
|
39
|
+
| Prescriptive instructions | Frameworks teach concepts — tasks give instructions |
|
|
40
|
+
| No examples | Concepts without examples are abstract and unhelpful |
|
|
41
|
+
| Dumping raw text | Organize by topic with clear headers and structure |
|
|
42
|
+
| Frontmatter on frameworks | Frameworks are reference knowledge, not metadata-bearing artifacts |
|
|
43
|
+
| Missing purpose section | Reader doesn't know when or why to reference this framework |
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "skills/*/tasks/*.md"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Tasks Rules
|
|
7
|
+
|
|
8
|
+
Authoring rules for task files. Validate against these when generating or reviewing `tasks/*.md` files.
|
|
9
|
+
|
|
10
|
+
## Must Have
|
|
11
|
+
|
|
12
|
+
### XML Sections (all required, in order)
|
|
13
|
+
1. `<purpose>` — 1-2 sentences, what this task accomplishes
|
|
14
|
+
2. `<user-story>` — As a [role], I want [action], so that [outcome]
|
|
15
|
+
3. `<when-to-use>` — Trigger conditions (2-4 items)
|
|
16
|
+
4. `<steps>` — Execution steps with named step elements
|
|
17
|
+
5. `<output>` — What artifact is produced, format, location
|
|
18
|
+
6. `<acceptance-criteria>` — Plain checklist with `- [ ]` items
|
|
19
|
+
|
|
20
|
+
### Optional Sections
|
|
21
|
+
- `<context>` — Files to read before starting (after when-to-use)
|
|
22
|
+
- `<references>` — Frameworks to lazy-load during execution (after context)
|
|
23
|
+
|
|
24
|
+
### No Frontmatter
|
|
25
|
+
Tasks do NOT use YAML frontmatter. Content starts with `<purpose>`.
|
|
26
|
+
|
|
27
|
+
### Step Requirements
|
|
28
|
+
- Every `<step>` must have a `name` attribute in snake_case
|
|
29
|
+
- Use `priority="first"` on the opening step
|
|
30
|
+
- Include explicit "Wait for response" signals at user input points
|
|
31
|
+
- Use `<if condition="...">` for conditional logic within steps
|
|
32
|
+
|
|
33
|
+
## Naming Conventions
|
|
34
|
+
|
|
35
|
+
| Element | Convention | Example |
|
|
36
|
+
|---------|-----------|---------|
|
|
37
|
+
| Task file | kebab-case | `full-build.md`, `design-offer.md` |
|
|
38
|
+
| Step names | snake_case | `gather_input`, `execute_core_work` |
|
|
39
|
+
| Directory | Always `tasks/` | `skills/revops-expert/tasks/` |
|
|
40
|
+
|
|
41
|
+
## Anti-Patterns
|
|
42
|
+
|
|
43
|
+
| Pattern | Why It's Wrong |
|
|
44
|
+
|---------|---------------|
|
|
45
|
+
| Unnamed steps | Can't reference, skip, or debug specific steps |
|
|
46
|
+
| Vague instructions ("make it good") | Claude interprets differently each time — be specific |
|
|
47
|
+
| No wait points | Task races through without user input |
|
|
48
|
+
| BDD acceptance criteria (Given/When/Then) | Skills use plain checklists — BDD is for Drive plans |
|
|
49
|
+
| Monolithic task | Split into focused tasks, each with one concern |
|
|
50
|
+
| Loading all frameworks upfront | Use `<references>` with conditional loading notes |
|
|
51
|
+
| Missing `<output>` | No one knows what the task produces or where |
|
|
52
|
+
| No user-story | Task has no clear beneficiary or outcome |
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- "skills/*/templates/*.md"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Templates Rules
|
|
7
|
+
|
|
8
|
+
Authoring rules for template files. Validate against these when generating or reviewing `templates/*.md` files.
|
|
9
|
+
|
|
10
|
+
## Must Have
|
|
11
|
+
|
|
12
|
+
### Structure (in order)
|
|
13
|
+
1. **Header** — `# [Name] Template`
|
|
14
|
+
2. **Intro** — Brief description + output file naming pattern
|
|
15
|
+
3. **Template block** — Fenced code block with ` ```template ` language tag
|
|
16
|
+
4. **Field Documentation** — Table explaining variable and prose fields
|
|
17
|
+
5. **Section Specifications** — Guidance for each section in the template
|
|
18
|
+
|
|
19
|
+
### Placeholder Conventions
|
|
20
|
+
- `{curly-braces}` — Variable interpolation, replaced with exact user input
|
|
21
|
+
- `[square-brackets]` — Human-written prose, replaced with descriptive text
|
|
22
|
+
- Never mix conventions: `{curly}` fields get data, `[square]` fields get prose
|
|
23
|
+
|
|
24
|
+
### Conditional Sections
|
|
25
|
+
- Document which template sections apply to which skill types
|
|
26
|
+
- Sections with no entries should show "None" rather than empty tables
|
|
27
|
+
|
|
28
|
+
## Naming Conventions
|
|
29
|
+
|
|
30
|
+
| Element | Convention | Example |
|
|
31
|
+
|---------|-----------|---------|
|
|
32
|
+
| Template file | kebab-case | `offer-design.md`, `skill-spec.md` |
|
|
33
|
+
| Directory | Always `templates/` | `skills/revops-expert/templates/` |
|
|
34
|
+
|
|
35
|
+
## Anti-Patterns
|
|
36
|
+
|
|
37
|
+
| Pattern | Why It's Wrong |
|
|
38
|
+
|---------|---------------|
|
|
39
|
+
| Template without field documentation | Users don't know what to fill in or how |
|
|
40
|
+
| Mixing placeholder types | Confuses variable interpolation with prose — pick the right one |
|
|
41
|
+
| No output file naming pattern | Users don't know where to save the filled template |
|
|
42
|
+
| Template block without language tag | Use ` ```template ` for clear identification |
|
|
43
|
+
| Overly rigid templates | Templates should guide, not constrain — allow Notes/custom sections |
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: forge
|
|
3
|
+
type: suite
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
category: development
|
|
6
|
+
description: Build consistent Claude Code skills using standardized syntax and guided workflows
|
|
7
|
+
allowed-tools: [Read, Write, Glob, Grep, Edit, AskUserQuestion, Bash]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<activation>
|
|
11
|
+
## What
|
|
12
|
+
Meta-skill for creating and maintaining Claude Code skills. Guides you through discovery (what to build), scaffolding (generating compliant files), distilling (chunking source material), and auditing (checking compliance) using standardized syntax specs.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
- Building a new skill from scratch
|
|
16
|
+
- Documenting an existing skill's design decisions
|
|
17
|
+
- Generating a compliant skill directory structure
|
|
18
|
+
- Distilling raw source material (books, courses) into framework chunks
|
|
19
|
+
- Auditing existing skills for syntax compliance
|
|
20
|
+
|
|
21
|
+
## Not For
|
|
22
|
+
- Using existing skills (invoke them directly)
|
|
23
|
+
- Runtime execution or testing of skills
|
|
24
|
+
- Editing individual skill files after creation (edit directly)
|
|
25
|
+
</activation>
|
|
26
|
+
|
|
27
|
+
<persona>
|
|
28
|
+
## Role
|
|
29
|
+
Senior skill architect — designs skill structures, enforces conventions, and guides builders through structured discovery.
|
|
30
|
+
|
|
31
|
+
## Style
|
|
32
|
+
- Structured interviewer during discovery — asks one question group at a time, waits for answers
|
|
33
|
+
- Opinionated about conventions — references specs by name when correcting patterns
|
|
34
|
+
- Concise — no lengthy explanations unless asked
|
|
35
|
+
- Uses tables for structured output
|
|
36
|
+
|
|
37
|
+
## Expertise
|
|
38
|
+
- Skill anatomy (entry points, tasks, templates, frameworks, context, checklists, rules)
|
|
39
|
+
- Placeholder conventions ([square] = prose, {curly} = variable)
|
|
40
|
+
- Routing patterns (always-load vs on-command vs on-demand)
|
|
41
|
+
- Skill tiers (suite, standalone, task-only) and when to use each
|
|
42
|
+
</persona>
|
|
43
|
+
|
|
44
|
+
<commands>
|
|
45
|
+
| Command | Description | Routes To |
|
|
46
|
+
|---------|-------------|-----------|
|
|
47
|
+
| `/forge discover` | Guided interview to capture skill design | tasks/discover.md |
|
|
48
|
+
| `/forge scaffold` | Generate skill directory from spec | tasks/scaffold.md |
|
|
49
|
+
| `/forge distill` | Transform raw source material into framework chunks | tasks/distill.md |
|
|
50
|
+
| `/forge audit` | Audit skill compliance against syntax specs | tasks/audit.md |
|
|
51
|
+
</commands>
|
|
52
|
+
|
|
53
|
+
<routing>
|
|
54
|
+
## Always Load
|
|
55
|
+
Nothing — Forge is lightweight until a command is invoked.
|
|
56
|
+
|
|
57
|
+
## Load on Command
|
|
58
|
+
@tasks/discover.md (when user runs /forge discover or starts discovery)
|
|
59
|
+
@tasks/scaffold.md (when user runs /forge scaffold)
|
|
60
|
+
@tasks/distill.md (when user runs /forge distill or needs to chunk source material)
|
|
61
|
+
@tasks/audit.md (when user runs /forge audit or wants to check skill compliance)
|
|
62
|
+
|
|
63
|
+
## Load on Demand
|
|
64
|
+
@specs/entry-point.md (when referencing entry point conventions)
|
|
65
|
+
@specs/tasks.md (when referencing task conventions)
|
|
66
|
+
@specs/templates.md (when referencing template conventions)
|
|
67
|
+
@specs/frameworks.md (when referencing framework conventions)
|
|
68
|
+
@specs/context.md (when referencing context conventions)
|
|
69
|
+
@specs/checklists.md (when referencing checklist conventions)
|
|
70
|
+
@specs/rules.md (when referencing rules conventions)
|
|
71
|
+
</routing>
|
|
72
|
+
|
|
73
|
+
<greeting>
|
|
74
|
+
Forge loaded.
|
|
75
|
+
|
|
76
|
+
- **Discover** — Guided interview to design a new skill
|
|
77
|
+
- **Scaffold** — Generate compliant skill directory from a spec
|
|
78
|
+
- **Distill** — Transform raw source material into framework chunks
|
|
79
|
+
- **Audit** — Check skill compliance against syntax specs
|
|
80
|
+
|
|
81
|
+
What are you building?
|
|
82
|
+
</greeting>
|