@specforge/cli 0.1.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/README.md +781 -0
- package/bin/specforge +21 -0
- package/dist/channel.d.ts +27 -0
- package/dist/channel.d.ts.map +1 -0
- package/dist/channel.js +22 -0
- package/dist/channel.js.map +1 -0
- package/dist/cli/commands/configure.d.ts +16 -0
- package/dist/cli/commands/configure.d.ts.map +1 -0
- package/dist/cli/commands/configure.js +186 -0
- package/dist/cli/commands/configure.js.map +1 -0
- package/dist/cli/commands/configure.types.d.ts +110 -0
- package/dist/cli/commands/configure.types.d.ts.map +1 -0
- package/dist/cli/commands/configure.types.js +82 -0
- package/dist/cli/commands/configure.types.js.map +1 -0
- package/dist/cli/commands/debug/call.d.ts +14 -0
- package/dist/cli/commands/debug/call.d.ts.map +1 -0
- package/dist/cli/commands/debug/call.js +96 -0
- package/dist/cli/commands/debug/call.js.map +1 -0
- package/dist/cli/commands/debug/index.d.ts +12 -0
- package/dist/cli/commands/debug/index.d.ts.map +1 -0
- package/dist/cli/commands/debug/index.js +14 -0
- package/dist/cli/commands/debug/index.js.map +1 -0
- package/dist/cli/commands/debug/register.d.ts +11 -0
- package/dist/cli/commands/debug/register.d.ts.map +1 -0
- package/dist/cli/commands/debug/register.js +78 -0
- package/dist/cli/commands/debug/register.js.map +1 -0
- package/dist/cli/commands/debug/test.d.ts +13 -0
- package/dist/cli/commands/debug/test.d.ts.map +1 -0
- package/dist/cli/commands/debug/test.js +91 -0
- package/dist/cli/commands/debug/test.js.map +1 -0
- package/dist/cli/commands/debug/tools.d.ts +13 -0
- package/dist/cli/commands/debug/tools.d.ts.map +1 -0
- package/dist/cli/commands/debug/tools.js +86 -0
- package/dist/cli/commands/debug/tools.js.map +1 -0
- package/dist/cli/commands/debug/types.d.ts +119 -0
- package/dist/cli/commands/debug/types.d.ts.map +1 -0
- package/dist/cli/commands/debug/types.js +36 -0
- package/dist/cli/commands/debug/types.js.map +1 -0
- package/dist/cli/commands/debug/whoami.d.ts +13 -0
- package/dist/cli/commands/debug/whoami.d.ts.map +1 -0
- package/dist/cli/commands/debug/whoami.js +131 -0
- package/dist/cli/commands/debug/whoami.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +16 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +413 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/doctor.types.d.ts +180 -0
- package/dist/cli/commands/doctor.types.d.ts.map +1 -0
- package/dist/cli/commands/doctor.types.js +140 -0
- package/dist/cli/commands/doctor.types.js.map +1 -0
- package/dist/cli/commands/feedback.d.ts +27 -0
- package/dist/cli/commands/feedback.d.ts.map +1 -0
- package/dist/cli/commands/feedback.js +262 -0
- package/dist/cli/commands/feedback.js.map +1 -0
- package/dist/cli/commands/feedback.types.d.ts +116 -0
- package/dist/cli/commands/feedback.types.d.ts.map +1 -0
- package/dist/cli/commands/feedback.types.js +65 -0
- package/dist/cli/commands/feedback.types.js.map +1 -0
- package/dist/cli/commands/index.d.ts +15 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +21 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +17 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +773 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/init.types.d.ts +193 -0
- package/dist/cli/commands/init.types.d.ts.map +1 -0
- package/dist/cli/commands/init.types.js +29 -0
- package/dist/cli/commands/init.types.js.map +1 -0
- package/dist/cli/commands/invitations.d.ts +31 -0
- package/dist/cli/commands/invitations.d.ts.map +1 -0
- package/dist/cli/commands/invitations.js +250 -0
- package/dist/cli/commands/invitations.js.map +1 -0
- package/dist/cli/commands/login.d.ts +40 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +139 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/members.d.ts +55 -0
- package/dist/cli/commands/members.d.ts.map +1 -0
- package/dist/cli/commands/members.js +296 -0
- package/dist/cli/commands/members.js.map +1 -0
- package/dist/cli/commands/scaffold/agent-types.d.ts +54 -0
- package/dist/cli/commands/scaffold/agent-types.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/agent-types.js +22 -0
- package/dist/cli/commands/scaffold/agent-types.js.map +1 -0
- package/dist/cli/commands/scaffold/display.d.ts +56 -0
- package/dist/cli/commands/scaffold/display.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/display.js +217 -0
- package/dist/cli/commands/scaffold/display.js.map +1 -0
- package/dist/cli/commands/scaffold/files.d.ts +99 -0
- package/dist/cli/commands/scaffold/files.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/files.js +122 -0
- package/dist/cli/commands/scaffold/files.js.map +1 -0
- package/dist/cli/commands/scaffold/index.d.ts +13 -0
- package/dist/cli/commands/scaffold/index.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/index.js +12 -0
- package/dist/cli/commands/scaffold/index.js.map +1 -0
- package/dist/cli/commands/scaffold/register.d.ts +11 -0
- package/dist/cli/commands/scaffold/register.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/register.js +11 -0
- package/dist/cli/commands/scaffold/register.js.map +1 -0
- package/dist/cli/commands/scaffold/scaffold.d.ts +11 -0
- package/dist/cli/commands/scaffold/scaffold.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/scaffold.js +728 -0
- package/dist/cli/commands/scaffold/scaffold.js.map +1 -0
- package/dist/cli/commands/scaffold/targets.d.ts +60 -0
- package/dist/cli/commands/scaffold/targets.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/targets.js +251 -0
- package/dist/cli/commands/scaffold/targets.js.map +1 -0
- package/dist/cli/commands/scaffold/types.d.ts +170 -0
- package/dist/cli/commands/scaffold/types.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/types.js +12 -0
- package/dist/cli/commands/scaffold/types.js.map +1 -0
- package/dist/cli/commands/scaffold/utils.d.ts +89 -0
- package/dist/cli/commands/scaffold/utils.d.ts.map +1 -0
- package/dist/cli/commands/scaffold/utils.js +401 -0
- package/dist/cli/commands/scaffold/utils.js.map +1 -0
- package/dist/cli/commands/status.d.ts +19 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +124 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/status.types.d.ts +37 -0
- package/dist/cli/commands/status.types.d.ts.map +1 -0
- package/dist/cli/commands/status.types.js +7 -0
- package/dist/cli/commands/status.types.js.map +1 -0
- package/dist/cli/commands/switch.d.ts +18 -0
- package/dist/cli/commands/switch.d.ts.map +1 -0
- package/dist/cli/commands/switch.js +134 -0
- package/dist/cli/commands/switch.js.map +1 -0
- package/dist/cli/commands/switch.types.d.ts +123 -0
- package/dist/cli/commands/switch.types.d.ts.map +1 -0
- package/dist/cli/commands/switch.types.js +46 -0
- package/dist/cli/commands/switch.types.js.map +1 -0
- package/dist/cli/config/agent-teams.types.d.ts +120 -0
- package/dist/cli/config/agent-teams.types.d.ts.map +1 -0
- package/dist/cli/config/agent-teams.types.js +23 -0
- package/dist/cli/config/agent-teams.types.js.map +1 -0
- package/dist/cli/config/index.d.ts +13 -0
- package/dist/cli/config/index.d.ts.map +1 -0
- package/dist/cli/config/index.js +7 -0
- package/dist/cli/config/index.js.map +1 -0
- package/dist/cli/config/loader.d.ts +114 -0
- package/dist/cli/config/loader.d.ts.map +1 -0
- package/dist/cli/config/loader.js +198 -0
- package/dist/cli/config/loader.js.map +1 -0
- package/dist/cli/config/paths.d.ts +107 -0
- package/dist/cli/config/paths.d.ts.map +1 -0
- package/dist/cli/config/paths.js +79 -0
- package/dist/cli/config/paths.js.map +1 -0
- package/dist/cli/config/planning-sessions-registry.d.ts +52 -0
- package/dist/cli/config/planning-sessions-registry.d.ts.map +1 -0
- package/dist/cli/config/planning-sessions-registry.js +46 -0
- package/dist/cli/config/planning-sessions-registry.js.map +1 -0
- package/dist/cli/config/types.d.ts +186 -0
- package/dist/cli/config/types.d.ts.map +1 -0
- package/dist/cli/config/types.js +27 -0
- package/dist/cli/config/types.js.map +1 -0
- package/dist/cli/config/validation.d.ts +62 -0
- package/dist/cli/config/validation.d.ts.map +1 -0
- package/dist/cli/config/validation.js +133 -0
- package/dist/cli/config/validation.js.map +1 -0
- package/dist/cli/config/writer.d.ts +153 -0
- package/dist/cli/config/writer.d.ts.map +1 -0
- package/dist/cli/config/writer.js +168 -0
- package/dist/cli/config/writer.js.map +1 -0
- package/dist/cli/index.d.ts +30 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +142 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/middleware/auth-guard.d.ts +107 -0
- package/dist/cli/middleware/auth-guard.d.ts.map +1 -0
- package/dist/cli/middleware/auth-guard.js +97 -0
- package/dist/cli/middleware/auth-guard.js.map +1 -0
- package/dist/cli/middleware/error-handler.d.ts +133 -0
- package/dist/cli/middleware/error-handler.d.ts.map +1 -0
- package/dist/cli/middleware/error-handler.js +139 -0
- package/dist/cli/middleware/error-handler.js.map +1 -0
- package/dist/cli/middleware/index.d.ts +6 -0
- package/dist/cli/middleware/index.d.ts.map +1 -0
- package/dist/cli/middleware/index.js +3 -0
- package/dist/cli/middleware/index.js.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-orchestrator.d.ts +9 -0
- package/dist/cli/templates/agents/content/core/sfag-orchestrator.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-orchestrator.js +160 -0
- package/dist/cli/templates/agents/content/core/sfag-orchestrator.js.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-spec-creator.d.ts +9 -0
- package/dist/cli/templates/agents/content/core/sfag-spec-creator.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-spec-creator.js +343 -0
- package/dist/cli/templates/agents/content/core/sfag-spec-creator.js.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-ticket-implementer.d.ts +9 -0
- package/dist/cli/templates/agents/content/core/sfag-ticket-implementer.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/core/sfag-ticket-implementer.js +254 -0
- package/dist/cli/templates/agents/content/core/sfag-ticket-implementer.js.map +1 -0
- package/dist/cli/templates/agents/content/research/sfag-package-researcher.d.ts +8 -0
- package/dist/cli/templates/agents/content/research/sfag-package-researcher.d.ts.map +1 -0
- package/dist/cli/templates/agents/content/research/sfag-package-researcher.js +128 -0
- package/dist/cli/templates/agents/content/research/sfag-package-researcher.js.map +1 -0
- package/dist/cli/templates/agents/index.d.ts +23 -0
- package/dist/cli/templates/agents/index.d.ts.map +1 -0
- package/dist/cli/templates/agents/index.js +29 -0
- package/dist/cli/templates/agents/index.js.map +1 -0
- package/dist/cli/templates/commands.d.ts +17 -0
- package/dist/cli/templates/commands.d.ts.map +1 -0
- package/dist/cli/templates/commands.js +78 -0
- package/dist/cli/templates/commands.js.map +1 -0
- package/dist/cli/templates/content/sf-blockers.d.ts +7 -0
- package/dist/cli/templates/content/sf-blockers.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-blockers.js +69 -0
- package/dist/cli/templates/content/sf-blockers.js.map +1 -0
- package/dist/cli/templates/content/sf-commit.d.ts +7 -0
- package/dist/cli/templates/content/sf-commit.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-commit.js +79 -0
- package/dist/cli/templates/content/sf-commit.js.map +1 -0
- package/dist/cli/templates/content/sf-context.d.ts +7 -0
- package/dist/cli/templates/content/sf-context.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-context.js +63 -0
- package/dist/cli/templates/content/sf-context.js.map +1 -0
- package/dist/cli/templates/content/sf-help.d.ts +7 -0
- package/dist/cli/templates/content/sf-help.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-help.js +42 -0
- package/dist/cli/templates/content/sf-help.js.map +1 -0
- package/dist/cli/templates/content/sf-init.d.ts +7 -0
- package/dist/cli/templates/content/sf-init.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-init.js +62 -0
- package/dist/cli/templates/content/sf-init.js.map +1 -0
- package/dist/cli/templates/content/sf-reset.d.ts +7 -0
- package/dist/cli/templates/content/sf-reset.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-reset.js +67 -0
- package/dist/cli/templates/content/sf-reset.js.map +1 -0
- package/dist/cli/templates/content/sf-search.d.ts +7 -0
- package/dist/cli/templates/content/sf-search.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-search.js +63 -0
- package/dist/cli/templates/content/sf-search.js.map +1 -0
- package/dist/cli/templates/content/sf-status.d.ts +7 -0
- package/dist/cli/templates/content/sf-status.d.ts.map +1 -0
- package/dist/cli/templates/content/sf-status.js +62 -0
- package/dist/cli/templates/content/sf-status.js.map +1 -0
- package/dist/cli/templates/index.d.ts +8 -0
- package/dist/cli/templates/index.d.ts.map +1 -0
- package/dist/cli/templates/index.js +17 -0
- package/dist/cli/templates/index.js.map +1 -0
- package/dist/cli/ui/banner.d.ts +38 -0
- package/dist/cli/ui/banner.d.ts.map +1 -0
- package/dist/cli/ui/banner.js +89 -0
- package/dist/cli/ui/banner.js.map +1 -0
- package/dist/cli/ui/colors.d.ts +76 -0
- package/dist/cli/ui/colors.d.ts.map +1 -0
- package/dist/cli/ui/colors.js +67 -0
- package/dist/cli/ui/colors.js.map +1 -0
- package/dist/cli/ui/index.d.ts +7 -0
- package/dist/cli/ui/index.d.ts.map +1 -0
- package/dist/cli/ui/index.js +4 -0
- package/dist/cli/ui/index.js.map +1 -0
- package/dist/cli/ui/output.d.ts +117 -0
- package/dist/cli/ui/output.d.ts.map +1 -0
- package/dist/cli/ui/output.js +83 -0
- package/dist/cli/ui/output.js.map +1 -0
- package/dist/cli/ui/spinner.d.ts +120 -0
- package/dist/cli/ui/spinner.d.ts.map +1 -0
- package/dist/cli/ui/spinner.js +158 -0
- package/dist/cli/ui/spinner.js.map +1 -0
- package/dist/cli/ui/time.d.ts +54 -0
- package/dist/cli/ui/time.d.ts.map +1 -0
- package/dist/cli/ui/time.js +119 -0
- package/dist/cli/ui/time.js.map +1 -0
- package/dist/client/api-client.d.ts +123 -0
- package/dist/client/api-client.d.ts.map +1 -0
- package/dist/client/api-client.js +105 -0
- package/dist/client/api-client.js.map +1 -0
- package/dist/client/cli-client.d.ts +26 -0
- package/dist/client/cli-client.d.ts.map +1 -0
- package/dist/client/cli-client.js +20 -0
- package/dist/client/cli-client.js.map +1 -0
- package/dist/config/index.d.ts +78 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +79 -0
- package/dist/config/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/format.d.ts +126 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +71 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/index.d.ts +11 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +45 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/monorepo-detector.d.ts +31 -0
- package/dist/lib/monorepo-detector.d.ts.map +1 -0
- package/dist/lib/monorepo-detector.js +188 -0
- package/dist/lib/monorepo-detector.js.map +1 -0
- package/dist/lib/prompt-generator.d.ts +65 -0
- package/dist/lib/prompt-generator.d.ts.map +1 -0
- package/dist/lib/prompt-generator.js +162 -0
- package/dist/lib/prompt-generator.js.map +1 -0
- package/dist/lib/strategy-analyzer.d.ts +59 -0
- package/dist/lib/strategy-analyzer.d.ts.map +1 -0
- package/dist/lib/strategy-analyzer.js +91 -0
- package/dist/lib/strategy-analyzer.js.map +1 -0
- package/dist/lib/workflow-definitions.d.ts +41 -0
- package/dist/lib/workflow-definitions.d.ts.map +1 -0
- package/dist/lib/workflow-definitions.js +497 -0
- package/dist/lib/workflow-definitions.js.map +1 -0
- package/dist/patterns/index.d.ts +9 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +21 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/patterns/inheritance.d.ts +193 -0
- package/dist/patterns/inheritance.d.ts.map +1 -0
- package/dist/patterns/inheritance.js +125 -0
- package/dist/patterns/inheritance.js.map +1 -0
- package/dist/server.d.ts +44 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +91 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/core/context-helper.d.ts +50 -0
- package/dist/tools/core/context-helper.d.ts.map +1 -0
- package/dist/tools/core/context-helper.js +49 -0
- package/dist/tools/core/context-helper.js.map +1 -0
- package/dist/tools/core/index.d.ts +2 -0
- package/dist/tools/core/index.d.ts.map +1 -0
- package/dist/tools/core/index.js +2 -0
- package/dist/tools/core/index.js.map +1 -0
- package/dist/tools/index.d.ts +58 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +1499 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/transport/__tests__/resolve-endpoint.test.d.ts +6 -0
- package/dist/transport/__tests__/resolve-endpoint.test.d.ts.map +1 -0
- package/dist/transport/index.d.ts +6 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +5 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/interface.d.ts +25 -0
- package/dist/transport/interface.d.ts.map +1 -0
- package/dist/transport/interface.js +1 -0
- package/dist/transport/interface.js.map +1 -0
- package/dist/transport/remote.d.ts +38 -0
- package/dist/transport/remote.d.ts.map +1 -0
- package/dist/transport/remote.js +107 -0
- package/dist/transport/remote.js.map +1 -0
- package/dist/transport/resolve-endpoint.d.ts +58 -0
- package/dist/transport/resolve-endpoint.d.ts.map +1 -0
- package/dist/transport/resolve-endpoint.js +146 -0
- package/dist/transport/resolve-endpoint.js.map +1 -0
- package/dist/types/index.d.ts +212 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -0
- package/dist/validation/index.d.ts +86 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +392 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/ticket-validation.d.ts +162 -0
- package/dist/validation/ticket-validation.d.ts.map +1 -0
- package/dist/validation/ticket-validation.js +188 -0
- package/dist/validation/ticket-validation.js.map +1 -0
- package/package.json +69 -0
- package/src/cli/templates/agents/content/core/sfag-orchestrator.ts +165 -0
- package/src/cli/templates/agents/content/core/sfag-spec-creator.ts +348 -0
- package/src/cli/templates/agents/content/core/sfag-ticket-implementer.ts +259 -0
- package/src/cli/templates/agents/content/research/sfag-package-researcher.ts +132 -0
- package/src/cli/templates/agents/index.ts +47 -0
- package/src/cli/templates/commands.ts +90 -0
- package/src/cli/templates/content/sf-blockers.ts +71 -0
- package/src/cli/templates/content/sf-commit.ts +81 -0
- package/src/cli/templates/content/sf-context.ts +65 -0
- package/src/cli/templates/content/sf-help.ts +44 -0
- package/src/cli/templates/content/sf-init.ts +64 -0
- package/src/cli/templates/content/sf-reset.ts +69 -0
- package/src/cli/templates/content/sf-search.ts +65 -0
- package/src/cli/templates/content/sf-status.ts +64 -0
- package/src/cli/templates/index.ts +16 -0
- package/src/cli/templates/skills/specforge-conventions.md +114 -0
- package/src/cli/templates/skills/specforge-orchestrator.md +409 -0
- package/src/cli/templates/skills/specforge-validator.md +128 -0
- package/src/cli/templates/skills/specforge-worker.md +412 -0
package/README.md
ADDED
|
@@ -0,0 +1,781 @@
|
|
|
1
|
+
# @specforge/mcp
|
|
2
|
+
|
|
3
|
+
MCP (Model Context Protocol) server for SpecForge - enables AI agents to interact with your projects, specifications, epics, and tickets.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @specforge/mcp
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Or install locally:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install @specforge/mcp
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Getting Your API Key
|
|
18
|
+
|
|
19
|
+
1. Log in to the SpecForge webapp
|
|
20
|
+
2. Navigate to **Settings > API Keys**
|
|
21
|
+
3. Click **Create New API Key**
|
|
22
|
+
4. Select the permissions you need (read, write, or both)
|
|
23
|
+
5. Copy the key immediately - it's only shown once!
|
|
24
|
+
|
|
25
|
+
API keys have the format: `sf_live_xxxxxxxxxxxxxxxxxxxxxx`
|
|
26
|
+
|
|
27
|
+
## Environment Variables
|
|
28
|
+
|
|
29
|
+
| Variable | Required | Description |
|
|
30
|
+
|----------|----------|-------------|
|
|
31
|
+
| `SPECFORGE_API_KEY` | Yes | Your API key from the webapp |
|
|
32
|
+
| `SPECFORGE_API_URL` | Yes | The MCP API Gateway URL from your deployment |
|
|
33
|
+
| `SPECFORGE_DEBUG` | No | Set to `true` to enable debug logging |
|
|
34
|
+
|
|
35
|
+
## AI Client Configuration
|
|
36
|
+
|
|
37
|
+
### Claude Desktop
|
|
38
|
+
|
|
39
|
+
Add to `~/.config/claude/claude_desktop_config.json` (Linux/macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"mcpServers": {
|
|
44
|
+
"specforge": {
|
|
45
|
+
"command": "specforge",
|
|
46
|
+
"env": {
|
|
47
|
+
"SPECFORGE_API_KEY": "sf_live_your_api_key_here",
|
|
48
|
+
"SPECFORGE_API_URL": "https://your-api-gateway-url.amazonaws.com/prod"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Claude Code (CLI)
|
|
56
|
+
|
|
57
|
+
Add to `~/.claude/settings.json`:
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"mcpServers": {
|
|
62
|
+
"specforge": {
|
|
63
|
+
"command": "specforge",
|
|
64
|
+
"env": {
|
|
65
|
+
"SPECFORGE_API_KEY": "sf_live_your_api_key_here",
|
|
66
|
+
"SPECFORGE_API_URL": "https://your-api-gateway-url.amazonaws.com/prod"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Or set environment variables in your shell and run:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
export SPECFORGE_API_KEY="sf_live_your_api_key_here"
|
|
77
|
+
export SPECFORGE_API_URL="https://your-api-gateway-url.amazonaws.com/prod"
|
|
78
|
+
specforge
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Cursor
|
|
82
|
+
|
|
83
|
+
Add to your Cursor MCP configuration:
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"mcpServers": {
|
|
88
|
+
"specforge": {
|
|
89
|
+
"command": "npx",
|
|
90
|
+
"args": ["-y", "@specforge/mcp"],
|
|
91
|
+
"env": {
|
|
92
|
+
"SPECFORGE_API_KEY": "sf_live_your_api_key_here",
|
|
93
|
+
"SPECFORGE_API_URL": "https://your-api-gateway-url.amazonaws.com/prod"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### GitHub Copilot VS Code Extension
|
|
101
|
+
|
|
102
|
+
Add to your VS Code `settings.json`:
|
|
103
|
+
|
|
104
|
+
```json
|
|
105
|
+
{
|
|
106
|
+
"github.copilot.advanced": {
|
|
107
|
+
"mcp": {
|
|
108
|
+
"servers": {
|
|
109
|
+
"specforge": {
|
|
110
|
+
"command": "specforge",
|
|
111
|
+
"env": {
|
|
112
|
+
"SPECFORGE_API_KEY": "sf_live_your_api_key_here",
|
|
113
|
+
"SPECFORGE_API_URL": "https://your-api-gateway-url.amazonaws.com/prod"
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### GitHub Copilot CLI
|
|
123
|
+
|
|
124
|
+
Create a config file at `~/.config/gh-copilot/mcp.json`:
|
|
125
|
+
|
|
126
|
+
```json
|
|
127
|
+
{
|
|
128
|
+
"servers": {
|
|
129
|
+
"specforge": {
|
|
130
|
+
"command": "specforge",
|
|
131
|
+
"env": {
|
|
132
|
+
"SPECFORGE_API_KEY": "sf_live_your_api_key_here",
|
|
133
|
+
"SPECFORGE_API_URL": "https://your-api-gateway-url.amazonaws.com/prod"
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### OpenAI Codex CLI
|
|
141
|
+
|
|
142
|
+
Configure using environment variables:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
export SPECFORGE_API_KEY="sf_live_your_api_key_here"
|
|
146
|
+
export SPECFORGE_API_URL="https://your-api-gateway-url.amazonaws.com/prod"
|
|
147
|
+
|
|
148
|
+
# Then configure your Codex CLI to use the MCP server
|
|
149
|
+
codex --mcp-server specforge
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### ChatGPT Desktop
|
|
153
|
+
|
|
154
|
+
Add to ChatGPT Desktop's MCP configuration:
|
|
155
|
+
|
|
156
|
+
```json
|
|
157
|
+
{
|
|
158
|
+
"mcpServers": {
|
|
159
|
+
"specforge": {
|
|
160
|
+
"command": "specforge",
|
|
161
|
+
"env": {
|
|
162
|
+
"SPECFORGE_API_KEY": "sf_live_your_api_key_here",
|
|
163
|
+
"SPECFORGE_API_URL": "https://your-api-gateway-url.amazonaws.com/prod"
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Windsurf
|
|
171
|
+
|
|
172
|
+
Add to Windsurf's settings:
|
|
173
|
+
|
|
174
|
+
```json
|
|
175
|
+
{
|
|
176
|
+
"mcp": {
|
|
177
|
+
"servers": {
|
|
178
|
+
"specforge": {
|
|
179
|
+
"command": "specforge",
|
|
180
|
+
"env": {
|
|
181
|
+
"SPECFORGE_API_KEY": "sf_live_your_api_key_here",
|
|
182
|
+
"SPECFORGE_API_URL": "https://your-api-gateway-url.amazonaws.com/prod"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Generic MCP Client
|
|
191
|
+
|
|
192
|
+
For any MCP-compatible client, the server uses stdio transport:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
# Start the server with environment variables
|
|
196
|
+
SPECFORGE_API_KEY="sf_live_xxx" SPECFORGE_API_URL="https://xxx" specforge
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
The server communicates via JSON-RPC over stdin/stdout.
|
|
200
|
+
|
|
201
|
+
## Available Tools
|
|
202
|
+
|
|
203
|
+
The SpecForge MCP server provides the following tool categories:
|
|
204
|
+
|
|
205
|
+
### Core Operations
|
|
206
|
+
- `list_projects` - List all accessible projects
|
|
207
|
+
- `get_project` - Get project details
|
|
208
|
+
- `list_specifications` - List specifications in a project
|
|
209
|
+
- `get_specification` - Get specification details
|
|
210
|
+
- `list_epics` - List epics in a specification
|
|
211
|
+
- `get_epic` - Get epic details
|
|
212
|
+
- `list_tickets` - List tickets in an epic
|
|
213
|
+
- `get_ticket` - Get ticket details with implementation steps
|
|
214
|
+
|
|
215
|
+
### Context & AI Tools
|
|
216
|
+
- `get_implementation_context` - Get full context for implementing a ticket
|
|
217
|
+
- `get_next_actionable_tickets` - Get tickets ready to work on
|
|
218
|
+
- `get_blocked_tickets` - Get blocked tickets with reasons
|
|
219
|
+
- `get_critical_path` - Get the critical implementation path
|
|
220
|
+
|
|
221
|
+
### Workflow & Tracking
|
|
222
|
+
- `start_work_session` - Start working on a ticket
|
|
223
|
+
- `complete_work_session` - Mark work complete with summary
|
|
224
|
+
- `report_progress` - Report progress on a ticket
|
|
225
|
+
|
|
226
|
+
### Testing Tools
|
|
227
|
+
- `report_test_results` - Report test results for a ticket
|
|
228
|
+
- `get_ticket_test_status` - Get test status
|
|
229
|
+
- `validate_ticket_completion` - Validate completion criteria
|
|
230
|
+
|
|
231
|
+
### Discovery Tools
|
|
232
|
+
- `discover_work_session` - Report bugs, tech debt, or new requirements
|
|
233
|
+
- `get_pending_discoveries` - Get unresolved discoveries
|
|
234
|
+
- `resolve_discovery` - Mark a discovery as resolved
|
|
235
|
+
|
|
236
|
+
### Status & Analytics
|
|
237
|
+
- `get_specification_status` - Get specification progress
|
|
238
|
+
- `get_epic_status` - Get epic progress
|
|
239
|
+
- `get_implementation_summary` - Get overall project summary
|
|
240
|
+
- `get_blockers_report` - Get blocking dependencies
|
|
241
|
+
|
|
242
|
+
### Search Tools
|
|
243
|
+
- `search_tickets` - Search tickets by text
|
|
244
|
+
- `find_tickets_by_file` - Find tickets affecting a file
|
|
245
|
+
- `find_tickets_by_tag` - Find tickets with specific tags
|
|
246
|
+
- `find_related_tickets` - Find related tickets
|
|
247
|
+
|
|
248
|
+
### Git Integration
|
|
249
|
+
- `link_commit` - Link a commit to a ticket
|
|
250
|
+
- `link_pull_request` - Link a PR to a ticket
|
|
251
|
+
- `get_ticket_commits` - Get commits for a ticket
|
|
252
|
+
- `get_ticket_prs` - Get PRs for a ticket
|
|
253
|
+
|
|
254
|
+
### Blueprint Management
|
|
255
|
+
- `blueprint` - Manage specification blueprints (diagrams, mockups, ADRs)
|
|
256
|
+
- Operations: `create`, `get`, `update`, `list`, `delete`, `link`, `unlink`, `get_for_ticket`
|
|
257
|
+
- Categories: flowchart, architecture, state, sequence, erd, mockup, adr, component, deployment, api
|
|
258
|
+
- See [Blueprint Documentation](/docs/mcp/tools/blueprint.md)
|
|
259
|
+
|
|
260
|
+
### Project Sharing
|
|
261
|
+
- `list_project_members` - List all members of a project
|
|
262
|
+
- `invite_to_project` - Invite a user by email
|
|
263
|
+
- `remove_project_member` - Remove a member from project
|
|
264
|
+
- `update_member_role` - Change a member's role (owner, editor, viewer)
|
|
265
|
+
- `list_invitations` - List pending invitations
|
|
266
|
+
- `accept_project_invitation` - Accept an invitation
|
|
267
|
+
- `decline_project_invitation` - Decline an invitation
|
|
268
|
+
- See [Project Sharing Documentation](/docs/mcp/collaboration/)
|
|
269
|
+
|
|
270
|
+
## CLI Commands
|
|
271
|
+
|
|
272
|
+
The SpecForge MCP package includes a CLI for project configuration and management.
|
|
273
|
+
|
|
274
|
+
### Quick Reference
|
|
275
|
+
|
|
276
|
+
| Command | Description |
|
|
277
|
+
|---------|-------------|
|
|
278
|
+
| `login` | Authenticate with your API key |
|
|
279
|
+
| `init` | Initialize SpecForge in a project |
|
|
280
|
+
| `configure` | Configure output preferences |
|
|
281
|
+
| `doctor` | Diagnose configuration issues |
|
|
282
|
+
| `status` | Show specification status |
|
|
283
|
+
| `projects` | List accessible projects |
|
|
284
|
+
| `specs` | List specifications |
|
|
285
|
+
| `switch` | Switch project/specification context |
|
|
286
|
+
| `tickets` | List tickets |
|
|
287
|
+
| `ticket <id>` | Show ticket details |
|
|
288
|
+
| `next` | Get next actionable ticket |
|
|
289
|
+
| `blocked` | List blocked tickets |
|
|
290
|
+
| `session` | Show session status |
|
|
291
|
+
| `session start` | Start implementation session |
|
|
292
|
+
| `session end` | End current session |
|
|
293
|
+
| `call <tool>` | Directly call an MCP tool |
|
|
294
|
+
| `tools` | List available MCP tools |
|
|
295
|
+
| `test` | Test API connection |
|
|
296
|
+
| `whoami` | Show current user/config |
|
|
297
|
+
| `autopilot run` | Start autonomous implementation |
|
|
298
|
+
| `autopilot status` | Show autopilot session status |
|
|
299
|
+
| `autopilot pause` | Pause active session |
|
|
300
|
+
| `autopilot resume` | Resume paused session |
|
|
301
|
+
| `autopilot abort` | Stop and cleanup session |
|
|
302
|
+
|
|
303
|
+
### Setup Commands
|
|
304
|
+
|
|
305
|
+
#### login
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
specforge login [--api-key <key>] [--force]
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
Authenticate with the SpecForge API.
|
|
312
|
+
|
|
313
|
+
| Option | Description |
|
|
314
|
+
|--------|-------------|
|
|
315
|
+
| `--api-key <key>` | Provide API key non-interactively (for CI/scripts) |
|
|
316
|
+
| `-f, --force` | Overwrite existing authentication |
|
|
317
|
+
|
|
318
|
+
Examples:
|
|
319
|
+
```bash
|
|
320
|
+
specforge login # Interactive login
|
|
321
|
+
specforge login --api-key sf_live_xxx # Non-interactive
|
|
322
|
+
specforge login --force # Re-authenticate
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
#### init
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
specforge init [--project <id>] [--spec <id>] [--format <format>] [--force]
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
Initialize SpecForge in the current directory.
|
|
332
|
+
|
|
333
|
+
| Option | Description |
|
|
334
|
+
|--------|-------------|
|
|
335
|
+
| `--project <id>` | Project ID (non-interactive mode) |
|
|
336
|
+
| `--spec <id>` | Specification ID (non-interactive mode) |
|
|
337
|
+
| `--format <format>` | Output format: json or toon |
|
|
338
|
+
| `-f, --force` | Overwrite existing configuration |
|
|
339
|
+
|
|
340
|
+
Creates:
|
|
341
|
+
- `.mcp.json` - Claude Code MCP server configuration
|
|
342
|
+
- `.specforge.json` - Project-specific settings
|
|
343
|
+
|
|
344
|
+
Examples:
|
|
345
|
+
```bash
|
|
346
|
+
specforge init # Interactive setup
|
|
347
|
+
specforge init --project proj_abc # Set project
|
|
348
|
+
specforge init --project proj_abc --spec spec_xyz --format toon
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
#### configure
|
|
352
|
+
|
|
353
|
+
```bash
|
|
354
|
+
specforge configure [--format <format>] [--project <id>]
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
Configure default preferences.
|
|
358
|
+
|
|
359
|
+
#### doctor
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
specforge doctor [--json]
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
Diagnose configuration and connection issues.
|
|
366
|
+
|
|
367
|
+
| Option | Description |
|
|
368
|
+
|--------|-------------|
|
|
369
|
+
| `--json` | Output as JSON for scripting |
|
|
370
|
+
|
|
371
|
+
Check categories:
|
|
372
|
+
- Configuration - Config files presence
|
|
373
|
+
- Authentication - API key format and validity
|
|
374
|
+
- Connection - API connectivity and response time
|
|
375
|
+
- Project Access - Access to configured project/specification
|
|
376
|
+
|
|
377
|
+
### Navigation Commands
|
|
378
|
+
|
|
379
|
+
#### switch
|
|
380
|
+
|
|
381
|
+
```bash
|
|
382
|
+
specforge switch [--project <id>] [--spec <id>]
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
Switch between projects or specifications.
|
|
386
|
+
|
|
387
|
+
#### projects
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
specforge projects [--json] [--toon]
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
List all accessible projects.
|
|
394
|
+
|
|
395
|
+
#### specs
|
|
396
|
+
|
|
397
|
+
```bash
|
|
398
|
+
specforge specs [--project <id>] [--status <status>] [--json]
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
List specifications for the current or specified project.
|
|
402
|
+
|
|
403
|
+
### Query Commands
|
|
404
|
+
|
|
405
|
+
#### status
|
|
406
|
+
|
|
407
|
+
```bash
|
|
408
|
+
specforge status [--spec <id>] [--json]
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
Show current specification status with progress metrics.
|
|
412
|
+
|
|
413
|
+
#### tickets
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
specforge tickets [--epic <id>] [--status <status>] [--limit <n>] [--json]
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
List tickets for the current specification.
|
|
420
|
+
|
|
421
|
+
#### ticket
|
|
422
|
+
|
|
423
|
+
```bash
|
|
424
|
+
specforge ticket <id> [--json] [--context]
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
Show full details for a specific ticket.
|
|
428
|
+
|
|
429
|
+
| Option | Description |
|
|
430
|
+
|--------|-------------|
|
|
431
|
+
| `--json` | Output as JSON |
|
|
432
|
+
| `--context` | Include implementation context |
|
|
433
|
+
|
|
434
|
+
#### next
|
|
435
|
+
|
|
436
|
+
```bash
|
|
437
|
+
specforge next [--spec <id>] [--count <n>] [--json]
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
Get the next actionable tickets (dependencies satisfied).
|
|
441
|
+
|
|
442
|
+
#### blocked
|
|
443
|
+
|
|
444
|
+
```bash
|
|
445
|
+
specforge blocked [--spec <id>] [--json]
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
List blocked tickets with blocking reasons.
|
|
449
|
+
|
|
450
|
+
### Session Commands
|
|
451
|
+
|
|
452
|
+
#### session
|
|
453
|
+
|
|
454
|
+
```bash
|
|
455
|
+
specforge session [--json]
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
Show current implementation session status.
|
|
459
|
+
|
|
460
|
+
#### session start
|
|
461
|
+
|
|
462
|
+
```bash
|
|
463
|
+
specforge session start [specId] [--mode <mode>] [--max-tickets <n>] [--stop-on-failure] [--force]
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
Start a new implementation session.
|
|
467
|
+
|
|
468
|
+
| Option | Description |
|
|
469
|
+
|--------|-------------|
|
|
470
|
+
| `[specId]` | Target specification (uses current if omitted) |
|
|
471
|
+
| `--mode <mode>` | Session mode: single, autonomous, guided |
|
|
472
|
+
| `--max-tickets <n>` | Maximum tickets to process |
|
|
473
|
+
| `--stop-on-failure` | Stop on first failure |
|
|
474
|
+
| `--force` | End existing session and start new |
|
|
475
|
+
|
|
476
|
+
#### session end
|
|
477
|
+
|
|
478
|
+
```bash
|
|
479
|
+
specforge session end [--status <status>] [--summary <text>]
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
End the current implementation session.
|
|
483
|
+
|
|
484
|
+
| Option | Description |
|
|
485
|
+
|--------|-------------|
|
|
486
|
+
| `--status <status>` | End status: completed or aborted |
|
|
487
|
+
| `--summary <text>` | Custom session summary |
|
|
488
|
+
|
|
489
|
+
### Debug Commands
|
|
490
|
+
|
|
491
|
+
#### call
|
|
492
|
+
|
|
493
|
+
```bash
|
|
494
|
+
specforge call <tool> [--args <json>] [--format <format>] [--raw]
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
Directly call an MCP tool with JSON arguments.
|
|
498
|
+
|
|
499
|
+
Examples:
|
|
500
|
+
```bash
|
|
501
|
+
specforge call list_projects
|
|
502
|
+
specforge call get_ticket --args='{"ticketId":"abc123"}'
|
|
503
|
+
specforge call list_tickets --format toon
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
#### tools
|
|
507
|
+
|
|
508
|
+
```bash
|
|
509
|
+
specforge tools [--category <category>] [--search <query>] [--json]
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
List available MCP tools with optional filtering.
|
|
513
|
+
|
|
514
|
+
#### test
|
|
515
|
+
|
|
516
|
+
```bash
|
|
517
|
+
specforge test
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
Test API connection and authentication. Shows response time and user info.
|
|
521
|
+
|
|
522
|
+
#### whoami
|
|
523
|
+
|
|
524
|
+
```bash
|
|
525
|
+
specforge whoami [--json]
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
Show current user information and configuration settings.
|
|
529
|
+
|
|
530
|
+
### Autopilot Commands
|
|
531
|
+
|
|
532
|
+
Autopilot enables autonomous ticket implementation using Claude Code. See [full documentation](/docs/mcp/autopilot/).
|
|
533
|
+
|
|
534
|
+
#### autopilot run
|
|
535
|
+
|
|
536
|
+
```bash
|
|
537
|
+
specforge autopilot run [options]
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
Start autonomous ticket implementation.
|
|
541
|
+
|
|
542
|
+
| Option | Description |
|
|
543
|
+
|--------|-------------|
|
|
544
|
+
| `-s, --spec <id>` | Specification ID |
|
|
545
|
+
| `-e, --epic <id>` | Only implement tickets from this epic |
|
|
546
|
+
| `-p, --parallel <n>` | Number of parallel workers (1-10) |
|
|
547
|
+
| `-c, --max-cost <usd>` | Maximum cost in USD |
|
|
548
|
+
| `-n, --dry-run` | Show plan without executing |
|
|
549
|
+
| `-w, --watch` | Watch mode with live dashboard |
|
|
550
|
+
| `-r, --resume <id>` | Resume a previous run |
|
|
551
|
+
|
|
552
|
+
Examples:
|
|
553
|
+
```bash
|
|
554
|
+
specforge autopilot run --dry-run # Preview
|
|
555
|
+
specforge autopilot run --parallel 2 # Run with 2 workers
|
|
556
|
+
specforge autopilot run --max-cost 10 # Limit to $10
|
|
557
|
+
specforge autopilot run --watch # Live dashboard
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
#### autopilot status
|
|
561
|
+
|
|
562
|
+
```bash
|
|
563
|
+
specforge autopilot status [options]
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
Show current autopilot session status.
|
|
567
|
+
|
|
568
|
+
| Option | Description |
|
|
569
|
+
|--------|-------------|
|
|
570
|
+
| `-w, --watch` | Live updates (2s refresh) |
|
|
571
|
+
| `-v, --verbose` | Show detailed dashboard |
|
|
572
|
+
| `--json` | Output as JSON |
|
|
573
|
+
|
|
574
|
+
#### autopilot pause / resume / abort
|
|
575
|
+
|
|
576
|
+
```bash
|
|
577
|
+
specforge autopilot pause # Pause gracefully
|
|
578
|
+
specforge autopilot resume # Resume latest session
|
|
579
|
+
specforge autopilot abort --force # Stop and cleanup
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
### Configuration Files
|
|
583
|
+
|
|
584
|
+
| File | Location | Purpose |
|
|
585
|
+
|------|----------|---------|
|
|
586
|
+
| Global config | `~/.specforge/config.json` | API key, default format |
|
|
587
|
+
| Project config | `.specforge.json` | Project/spec IDs, format override |
|
|
588
|
+
| MCP config | `.mcp.json` | Claude Code integration |
|
|
589
|
+
|
|
590
|
+
Configuration priority (highest to lowest):
|
|
591
|
+
1. Environment variables
|
|
592
|
+
2. Project config (`.specforge.json`)
|
|
593
|
+
3. Global config (`~/.specforge/config.json`)
|
|
594
|
+
4. Default values
|
|
595
|
+
|
|
596
|
+
### Environment Variables
|
|
597
|
+
|
|
598
|
+
| Variable | Description |
|
|
599
|
+
|----------|-------------|
|
|
600
|
+
| `SPECFORGE_API_KEY` | API key (overrides config) |
|
|
601
|
+
| `SPECFORGE_API_URL` | API endpoint URL |
|
|
602
|
+
| `SPECFORGE_FORMAT` | Output format (json/toon) |
|
|
603
|
+
| `SPECFORGE_DEBUG` | Enable debug mode (true/false) |
|
|
604
|
+
|
|
605
|
+
### Exit Codes
|
|
606
|
+
|
|
607
|
+
| Code | Name | Description |
|
|
608
|
+
|------|------|-------------|
|
|
609
|
+
| 0 | SUCCESS | Successful execution |
|
|
610
|
+
| 1 | ERROR | General error |
|
|
611
|
+
| 2 | AUTH_ERROR | Authentication failed |
|
|
612
|
+
| 3 | CONFIG_ERROR | Configuration error |
|
|
613
|
+
| 4 | NETWORK_ERROR | Network/API error |
|
|
614
|
+
| 5 | NOT_FOUND | Resource not found |
|
|
615
|
+
| 6 | VALIDATION_ERROR | Input validation error |
|
|
616
|
+
|
|
617
|
+
### Automation & CI/CD
|
|
618
|
+
|
|
619
|
+
Non-interactive usage for scripts:
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
# Authenticate via environment or flag
|
|
623
|
+
export SPECFORGE_API_KEY="sf_live_xxx"
|
|
624
|
+
specforge login --api-key $SPECFORGE_API_KEY
|
|
625
|
+
|
|
626
|
+
# Initialize non-interactively
|
|
627
|
+
specforge init --project $PROJECT_ID --spec $SPEC_ID --format json --force
|
|
628
|
+
|
|
629
|
+
# Check health (exits 1 on failure)
|
|
630
|
+
specforge doctor --json
|
|
631
|
+
|
|
632
|
+
# Get tickets as JSON for processing
|
|
633
|
+
specforge tickets --json | jq '.[]'
|
|
634
|
+
|
|
635
|
+
# Get next actionable ticket ID
|
|
636
|
+
specforge next --json | jq -r '.tickets[0].id'
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
### Global Options
|
|
640
|
+
|
|
641
|
+
These options work with any command:
|
|
642
|
+
|
|
643
|
+
| Option | Description |
|
|
644
|
+
|--------|-------------|
|
|
645
|
+
| `--debug` | Enable debug output |
|
|
646
|
+
| `--no-color` | Disable colored output |
|
|
647
|
+
| `--json` | Output in JSON format |
|
|
648
|
+
| `-v, --version` | Show version |
|
|
649
|
+
| `-h, --help` | Show command help |
|
|
650
|
+
|
|
651
|
+
## Troubleshooting
|
|
652
|
+
|
|
653
|
+
### "SPECFORGE_API_KEY environment variable is required"
|
|
654
|
+
|
|
655
|
+
Make sure you've set the `SPECFORGE_API_KEY` environment variable with your API key from the SpecForge webapp.
|
|
656
|
+
|
|
657
|
+
```bash
|
|
658
|
+
# Check if it's set
|
|
659
|
+
echo $SPECFORGE_API_KEY
|
|
660
|
+
|
|
661
|
+
# Set it
|
|
662
|
+
export SPECFORGE_API_KEY="sf_live_your_key_here"
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
### "Invalid API key format"
|
|
666
|
+
|
|
667
|
+
API keys must start with `sf_live_`. If your key doesn't match this format, regenerate it in the webapp.
|
|
668
|
+
|
|
669
|
+
### "SPECFORGE_API_URL environment variable is required"
|
|
670
|
+
|
|
671
|
+
You need to provide the API Gateway URL from your SpecForge deployment. This is output when you deploy the backend.
|
|
672
|
+
|
|
673
|
+
### Connection Timeouts
|
|
674
|
+
|
|
675
|
+
If you're experiencing connection issues:
|
|
676
|
+
|
|
677
|
+
1. Verify your API URL is correct
|
|
678
|
+
2. Check your network connection
|
|
679
|
+
3. Enable debug mode to see detailed logs:
|
|
680
|
+
|
|
681
|
+
```bash
|
|
682
|
+
export SPECFORGE_DEBUG=true
|
|
683
|
+
specforge
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
### Debug Mode
|
|
687
|
+
|
|
688
|
+
Enable debug logging to troubleshoot issues:
|
|
689
|
+
|
|
690
|
+
```bash
|
|
691
|
+
export SPECFORGE_DEBUG=true
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
This will output detailed logs to stderr, including:
|
|
695
|
+
- Configuration loaded
|
|
696
|
+
- Tool calls received
|
|
697
|
+
- API requests made
|
|
698
|
+
- Response data
|
|
699
|
+
|
|
700
|
+
### Server Not Starting
|
|
701
|
+
|
|
702
|
+
1. Ensure Node.js 18+ is installed
|
|
703
|
+
2. Check that the package is installed globally: `npm list -g @specforge/mcp`
|
|
704
|
+
3. Try reinstalling: `npm install -g @specforge/mcp`
|
|
705
|
+
|
|
706
|
+
### Permission Denied
|
|
707
|
+
|
|
708
|
+
If you get "permission denied" when running `specforge`:
|
|
709
|
+
|
|
710
|
+
```bash
|
|
711
|
+
# On macOS/Linux
|
|
712
|
+
chmod +x $(which specforge)
|
|
713
|
+
|
|
714
|
+
# Or run with node directly
|
|
715
|
+
node $(npm root -g)/@specforge/mcp/dist/index.js
|
|
716
|
+
```
|
|
717
|
+
|
|
718
|
+
## Development
|
|
719
|
+
|
|
720
|
+
To contribute to the MCP server:
|
|
721
|
+
|
|
722
|
+
```bash
|
|
723
|
+
# Clone the repo
|
|
724
|
+
git clone https://github.com/your-org/specforge.git
|
|
725
|
+
cd specforge/mcp
|
|
726
|
+
|
|
727
|
+
# Install dependencies
|
|
728
|
+
npm install
|
|
729
|
+
|
|
730
|
+
# Build
|
|
731
|
+
npm run build
|
|
732
|
+
|
|
733
|
+
# Link for local testing
|
|
734
|
+
npm link
|
|
735
|
+
|
|
736
|
+
# Run in development mode
|
|
737
|
+
npm run dev
|
|
738
|
+
```
|
|
739
|
+
|
|
740
|
+
### Channel-aware build
|
|
741
|
+
|
|
742
|
+
The CLI ships as two distinct npm packages:
|
|
743
|
+
|
|
744
|
+
| Channel | Package | Endpoints | Config dir |
|
|
745
|
+
|---------|---------|-----------|------------|
|
|
746
|
+
| `stable` | `@specforge/cli` | `mcp.specforge.tech` (primary) + `mcp.specforge.com.br` (fallback) | `~/.specforge/` |
|
|
747
|
+
| `canary` | `@specforge/canary-cli` | `devmcp.specforge.tech` + `devmcp.specforge.com.br` | `~/.specforge-canary/` |
|
|
748
|
+
|
|
749
|
+
The build picks the channel from `SPECFORGE_BUILD_CHANNEL` (defaults to
|
|
750
|
+
`stable` when unset). To build a canary tarball locally:
|
|
751
|
+
|
|
752
|
+
```bash
|
|
753
|
+
SPECFORGE_BUILD_CHANNEL=canary pnpm --filter @specforge/cli build
|
|
754
|
+
```
|
|
755
|
+
|
|
756
|
+
The CD workflows (`.github/workflows/deploy-{dev,prod}.yml`) set this env
|
|
757
|
+
var on the `publish-cli-{canary,stable}` jobs so the published tarballs
|
|
758
|
+
contain the matching endpoint literals.
|
|
759
|
+
|
|
760
|
+
### Endpoint resolver and overrides
|
|
761
|
+
|
|
762
|
+
On first call in a process, the MCP transport probes
|
|
763
|
+
`CHANNEL.endpoint.healthPrimary` (2 s timeout). On a DNS-class failure
|
|
764
|
+
(`ENOTFOUND`, `ENETUNREACH`, TLS handshake, timeout) it falls over to
|
|
765
|
+
`CHANNEL.endpoint.healthFallback`. The selection is cached for 5 minutes
|
|
766
|
+
under `~/${CHANNEL.configDir}/mcp-endpoint-cache.json`. The CLI REST
|
|
767
|
+
client uses the same resolver with `cli-rest-endpoint-cache.json`.
|
|
768
|
+
|
|
769
|
+
To bypass the resolver (for ops smokes or self-hosting):
|
|
770
|
+
|
|
771
|
+
```bash
|
|
772
|
+
export SPECFORGE_API_URL=https://your-mcp.example/local
|
|
773
|
+
export SPECFORGE_CLI_REST_URL=https://your-cli.example
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
Reachable-but-rejecting responses (4xx/5xx, `ECONNRESET` mid-stream) do
|
|
777
|
+
NOT trigger fallover — the backend was reachable, just unhealthy.
|
|
778
|
+
|
|
779
|
+
## License
|
|
780
|
+
|
|
781
|
+
MIT
|