forge-server 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/.claude/hooks/worktree-create.sh +64 -0
- package/.claude/hooks/worktree-remove.sh +57 -0
- package/.claude/settings.local.json +29 -0
- package/.forge/knowledge/conventions.yaml +1 -0
- package/.forge/knowledge/decisions.yaml +1 -0
- package/.forge/knowledge/gotchas.yaml +1 -0
- package/.forge/knowledge/patterns.yaml +1 -0
- package/.forge/manifest.yaml +6 -0
- package/CLAUDE.md +144 -0
- package/bin/setup-forge.sh +132 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +553 -0
- package/dist/cli.js.map +1 -0
- package/dist/context/codebase.d.ts +57 -0
- package/dist/context/codebase.d.ts.map +1 -0
- package/dist/context/codebase.js +301 -0
- package/dist/context/codebase.js.map +1 -0
- package/dist/context/injector.d.ts +147 -0
- package/dist/context/injector.d.ts.map +1 -0
- package/dist/context/injector.js +533 -0
- package/dist/context/injector.js.map +1 -0
- package/dist/context/memory.d.ts +32 -0
- package/dist/context/memory.d.ts.map +1 -0
- package/dist/context/memory.js +140 -0
- package/dist/context/memory.js.map +1 -0
- package/dist/context/session-index.d.ts +54 -0
- package/dist/context/session-index.d.ts.map +1 -0
- package/dist/context/session-index.js +265 -0
- package/dist/context/session-index.js.map +1 -0
- package/dist/context/session.d.ts +42 -0
- package/dist/context/session.d.ts.map +1 -0
- package/dist/context/session.js +121 -0
- package/dist/context/session.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/ingestion/chunker.d.ts +19 -0
- package/dist/ingestion/chunker.d.ts.map +1 -0
- package/dist/ingestion/chunker.js +189 -0
- package/dist/ingestion/chunker.js.map +1 -0
- package/dist/ingestion/embedder.d.ts +45 -0
- package/dist/ingestion/embedder.d.ts.map +1 -0
- package/dist/ingestion/embedder.js +152 -0
- package/dist/ingestion/embedder.js.map +1 -0
- package/dist/ingestion/git-analyzer.d.ts +77 -0
- package/dist/ingestion/git-analyzer.d.ts.map +1 -0
- package/dist/ingestion/git-analyzer.js +437 -0
- package/dist/ingestion/git-analyzer.js.map +1 -0
- package/dist/ingestion/indexer.d.ts +79 -0
- package/dist/ingestion/indexer.d.ts.map +1 -0
- package/dist/ingestion/indexer.js +766 -0
- package/dist/ingestion/indexer.js.map +1 -0
- package/dist/ingestion/markdown-chunker.d.ts +19 -0
- package/dist/ingestion/markdown-chunker.d.ts.map +1 -0
- package/dist/ingestion/markdown-chunker.js +243 -0
- package/dist/ingestion/markdown-chunker.js.map +1 -0
- package/dist/ingestion/markdown-knowledge.d.ts +21 -0
- package/dist/ingestion/markdown-knowledge.d.ts.map +1 -0
- package/dist/ingestion/markdown-knowledge.js +129 -0
- package/dist/ingestion/markdown-knowledge.js.map +1 -0
- package/dist/ingestion/parser.d.ts +20 -0
- package/dist/ingestion/parser.d.ts.map +1 -0
- package/dist/ingestion/parser.js +429 -0
- package/dist/ingestion/parser.js.map +1 -0
- package/dist/ingestion/watcher.d.ts +28 -0
- package/dist/ingestion/watcher.d.ts.map +1 -0
- package/dist/ingestion/watcher.js +147 -0
- package/dist/ingestion/watcher.js.map +1 -0
- package/dist/knowledge/hydrator.d.ts +37 -0
- package/dist/knowledge/hydrator.d.ts.map +1 -0
- package/dist/knowledge/hydrator.js +220 -0
- package/dist/knowledge/hydrator.js.map +1 -0
- package/dist/knowledge/registry.d.ts +129 -0
- package/dist/knowledge/registry.d.ts.map +1 -0
- package/dist/knowledge/registry.js +361 -0
- package/dist/knowledge/registry.js.map +1 -0
- package/dist/knowledge/search.d.ts +114 -0
- package/dist/knowledge/search.d.ts.map +1 -0
- package/dist/knowledge/search.js +428 -0
- package/dist/knowledge/search.js.map +1 -0
- package/dist/knowledge/store.d.ts +76 -0
- package/dist/knowledge/store.d.ts.map +1 -0
- package/dist/knowledge/store.js +230 -0
- package/dist/knowledge/store.js.map +1 -0
- package/dist/learning/confidence.d.ts +30 -0
- package/dist/learning/confidence.d.ts.map +1 -0
- package/dist/learning/confidence.js +165 -0
- package/dist/learning/confidence.js.map +1 -0
- package/dist/learning/patterns.d.ts +52 -0
- package/dist/learning/patterns.d.ts.map +1 -0
- package/dist/learning/patterns.js +290 -0
- package/dist/learning/patterns.js.map +1 -0
- package/dist/learning/trajectory.d.ts +55 -0
- package/dist/learning/trajectory.d.ts.map +1 -0
- package/dist/learning/trajectory.js +200 -0
- package/dist/learning/trajectory.js.map +1 -0
- package/dist/memory/memory-compat.d.ts +100 -0
- package/dist/memory/memory-compat.d.ts.map +1 -0
- package/dist/memory/memory-compat.js +146 -0
- package/dist/memory/memory-compat.js.map +1 -0
- package/dist/memory/observation-store.d.ts +57 -0
- package/dist/memory/observation-store.d.ts.map +1 -0
- package/dist/memory/observation-store.js +154 -0
- package/dist/memory/observation-store.js.map +1 -0
- package/dist/memory/session-tracker.d.ts +81 -0
- package/dist/memory/session-tracker.d.ts.map +1 -0
- package/dist/memory/session-tracker.js +262 -0
- package/dist/memory/session-tracker.js.map +1 -0
- package/dist/pipeline/engine.d.ts +179 -0
- package/dist/pipeline/engine.d.ts.map +1 -0
- package/dist/pipeline/engine.js +691 -0
- package/dist/pipeline/engine.js.map +1 -0
- package/dist/pipeline/events.d.ts +54 -0
- package/dist/pipeline/events.d.ts.map +1 -0
- package/dist/pipeline/events.js +157 -0
- package/dist/pipeline/events.js.map +1 -0
- package/dist/pipeline/parallel.d.ts +83 -0
- package/dist/pipeline/parallel.d.ts.map +1 -0
- package/dist/pipeline/parallel.js +277 -0
- package/dist/pipeline/parallel.js.map +1 -0
- package/dist/pipeline/state-machine.d.ts +65 -0
- package/dist/pipeline/state-machine.d.ts.map +1 -0
- package/dist/pipeline/state-machine.js +176 -0
- package/dist/pipeline/state-machine.js.map +1 -0
- package/dist/query/graph-queries.d.ts +84 -0
- package/dist/query/graph-queries.d.ts.map +1 -0
- package/dist/query/graph-queries.js +216 -0
- package/dist/query/graph-queries.js.map +1 -0
- package/dist/query/hybrid-search.d.ts +34 -0
- package/dist/query/hybrid-search.d.ts.map +1 -0
- package/dist/query/hybrid-search.js +263 -0
- package/dist/query/hybrid-search.js.map +1 -0
- package/dist/query/intent-detector.d.ts +35 -0
- package/dist/query/intent-detector.d.ts.map +1 -0
- package/dist/query/intent-detector.js +115 -0
- package/dist/query/intent-detector.js.map +1 -0
- package/dist/query/ranking.d.ts +57 -0
- package/dist/query/ranking.d.ts.map +1 -0
- package/dist/query/ranking.js +109 -0
- package/dist/query/ranking.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +291 -0
- package/dist/server.js.map +1 -0
- package/dist/storage/falkordb-store.d.ts +73 -0
- package/dist/storage/falkordb-store.d.ts.map +1 -0
- package/dist/storage/falkordb-store.js +346 -0
- package/dist/storage/falkordb-store.js.map +1 -0
- package/dist/storage/file-cache.d.ts +32 -0
- package/dist/storage/file-cache.d.ts.map +1 -0
- package/dist/storage/file-cache.js +115 -0
- package/dist/storage/file-cache.js.map +1 -0
- package/dist/storage/interfaces.d.ts +151 -0
- package/dist/storage/interfaces.d.ts.map +1 -0
- package/dist/storage/interfaces.js +7 -0
- package/dist/storage/interfaces.js.map +1 -0
- package/dist/storage/qdrant-store.d.ts +110 -0
- package/dist/storage/qdrant-store.d.ts.map +1 -0
- package/dist/storage/qdrant-store.js +467 -0
- package/dist/storage/qdrant-store.js.map +1 -0
- package/dist/storage/schema.d.ts +4 -0
- package/dist/storage/schema.d.ts.map +1 -0
- package/dist/storage/schema.js +136 -0
- package/dist/storage/schema.js.map +1 -0
- package/dist/storage/sqlite.d.ts +35 -0
- package/dist/storage/sqlite.d.ts.map +1 -0
- package/dist/storage/sqlite.js +132 -0
- package/dist/storage/sqlite.js.map +1 -0
- package/dist/tools/collaboration-tools.d.ts +111 -0
- package/dist/tools/collaboration-tools.d.ts.map +1 -0
- package/dist/tools/collaboration-tools.js +174 -0
- package/dist/tools/collaboration-tools.js.map +1 -0
- package/dist/tools/context-tools.d.ts +293 -0
- package/dist/tools/context-tools.d.ts.map +1 -0
- package/dist/tools/context-tools.js +437 -0
- package/dist/tools/context-tools.js.map +1 -0
- package/dist/tools/graph-tools.d.ts +129 -0
- package/dist/tools/graph-tools.d.ts.map +1 -0
- package/dist/tools/graph-tools.js +237 -0
- package/dist/tools/graph-tools.js.map +1 -0
- package/dist/tools/ingestion-tools.d.ts +96 -0
- package/dist/tools/ingestion-tools.d.ts.map +1 -0
- package/dist/tools/ingestion-tools.js +90 -0
- package/dist/tools/ingestion-tools.js.map +1 -0
- package/dist/tools/learning-tools.d.ts +168 -0
- package/dist/tools/learning-tools.d.ts.map +1 -0
- package/dist/tools/learning-tools.js +158 -0
- package/dist/tools/learning-tools.js.map +1 -0
- package/dist/tools/memory-tools.d.ts +183 -0
- package/dist/tools/memory-tools.d.ts.map +1 -0
- package/dist/tools/memory-tools.js +197 -0
- package/dist/tools/memory-tools.js.map +1 -0
- package/dist/tools/phase-tools.d.ts +954 -0
- package/dist/tools/phase-tools.d.ts.map +1 -0
- package/dist/tools/phase-tools.js +1215 -0
- package/dist/tools/phase-tools.js.map +1 -0
- package/dist/tools/pipeline-tools.d.ts +140 -0
- package/dist/tools/pipeline-tools.d.ts.map +1 -0
- package/dist/tools/pipeline-tools.js +162 -0
- package/dist/tools/pipeline-tools.js.map +1 -0
- package/dist/tools/registration-tools.d.ts +220 -0
- package/dist/tools/registration-tools.d.ts.map +1 -0
- package/dist/tools/registration-tools.js +391 -0
- package/dist/tools/registration-tools.js.map +1 -0
- package/dist/util/circuit-breaker.d.ts +75 -0
- package/dist/util/circuit-breaker.d.ts.map +1 -0
- package/dist/util/circuit-breaker.js +159 -0
- package/dist/util/circuit-breaker.js.map +1 -0
- package/dist/util/config.d.ts +23 -0
- package/dist/util/config.d.ts.map +1 -0
- package/dist/util/config.js +164 -0
- package/dist/util/config.js.map +1 -0
- package/dist/util/logger.d.ts +13 -0
- package/dist/util/logger.d.ts.map +1 -0
- package/dist/util/logger.js +45 -0
- package/dist/util/logger.js.map +1 -0
- package/dist/util/token-counter.d.ts +24 -0
- package/dist/util/token-counter.d.ts.map +1 -0
- package/dist/util/token-counter.js +48 -0
- package/dist/util/token-counter.js.map +1 -0
- package/dist/util/types.d.ts +525 -0
- package/dist/util/types.d.ts.map +1 -0
- package/dist/util/types.js +5 -0
- package/dist/util/types.js.map +1 -0
- package/docker-compose.yml +20 -0
- package/docs/plans/2026-02-27-swarm-coordination/architecture.md +203 -0
- package/docs/plans/2026-02-27-swarm-coordination/vision.md +57 -0
- package/docs/plans/completed/2026-02-26-forge-plugin-bundling/architecture.md +1 -0
- package/docs/plans/completed/2026-02-26-forge-plugin-bundling/vision.md +300 -0
- package/docs/plans/completed/2026-02-27-forge-swarm-learning/architecture.md +480 -0
- package/docs/plans/completed/2026-02-27-forge-swarm-learning/verification-checklist.md +462 -0
- package/docs/plans/completed/2026-02-27-git-history-atlassian/git-jira-plan.md +181 -0
- package/package.json +39 -0
- package/plugin/.claude-plugin/plugin.json +8 -0
- package/plugin/.mcp.json +15 -0
- package/plugin/README.md +134 -0
- package/plugin/agents/architect.md +367 -0
- package/plugin/agents/backend-specialist.md +263 -0
- package/plugin/agents/brainstormer.md +122 -0
- package/plugin/agents/data-specialist.md +266 -0
- package/plugin/agents/designer.md +408 -0
- package/plugin/agents/frontend-specialist.md +241 -0
- package/plugin/agents/inspector.md +406 -0
- package/plugin/agents/knowledge-keeper.md +443 -0
- package/plugin/agents/platform-engineer.md +326 -0
- package/plugin/agents/product-manager.md +268 -0
- package/plugin/agents/product-owner.md +438 -0
- package/plugin/agents/pulse-checker.md +73 -0
- package/plugin/agents/qa-strategist.md +500 -0
- package/plugin/agents/self-improver.md +310 -0
- package/plugin/agents/strategist.md +360 -0
- package/plugin/agents/supervisor.md +380 -0
- package/plugin/commands/brainstorm.md +25 -0
- package/plugin/commands/forge.md +88 -0
- package/plugin/docs/atlassian-integration.md +110 -0
- package/plugin/docs/workflow.md +126 -0
- package/plugin/skills/agent-development/.skillfish.json +10 -0
- package/plugin/skills/agent-development/SKILL.md +415 -0
- package/plugin/skills/agent-development/examples/agent-creation-prompt.md +238 -0
- package/plugin/skills/agent-development/examples/complete-agent-examples.md +427 -0
- package/plugin/skills/agent-development/references/agent-creation-system-prompt.md +207 -0
- package/plugin/skills/agent-development/references/system-prompt-design.md +411 -0
- package/plugin/skills/agent-development/references/triggering-examples.md +491 -0
- package/plugin/skills/agent-development/scripts/validate-agent.sh +217 -0
- package/plugin/skills/agent-handoff/SKILL.md +335 -0
- package/plugin/skills/anti-stub/SKILL.md +317 -0
- package/plugin/skills/brainstorm/SKILL.md +31 -0
- package/plugin/skills/debugging/SKILL.md +276 -0
- package/plugin/skills/fix/SKILL.md +62 -0
- package/plugin/skills/frontend-design/.skillfish.json +10 -0
- package/plugin/skills/frontend-design/SKILL.md +42 -0
- package/plugin/skills/gotchas/SKILL.md +61 -0
- package/plugin/skills/graph-orchestrator/SKILL.md +38 -0
- package/plugin/skills/history/SKILL.md +58 -0
- package/plugin/skills/impact/SKILL.md +59 -0
- package/plugin/skills/implementation-execution/SKILL.md +291 -0
- package/plugin/skills/index-repo/SKILL.md +55 -0
- package/plugin/skills/interviewing/SKILL.md +225 -0
- package/plugin/skills/knowledge-curation/SKILL.md +393 -0
- package/plugin/skills/learn/SKILL.md +69 -0
- package/plugin/skills/mcp-integration/.skillfish.json +10 -0
- package/plugin/skills/mcp-integration/SKILL.md +554 -0
- package/plugin/skills/mcp-integration/examples/http-server.json +20 -0
- package/plugin/skills/mcp-integration/examples/sse-server.json +19 -0
- package/plugin/skills/mcp-integration/examples/stdio-server.json +26 -0
- package/plugin/skills/mcp-integration/references/authentication.md +549 -0
- package/plugin/skills/mcp-integration/references/server-types.md +536 -0
- package/plugin/skills/mcp-integration/references/tool-usage.md +538 -0
- package/plugin/skills/nestjs/.skillfish.json +10 -0
- package/plugin/skills/nestjs/SKILL.md +669 -0
- package/plugin/skills/nestjs/drizzle-reference.md +1894 -0
- package/plugin/skills/nestjs/reference.md +1447 -0
- package/plugin/skills/nestjs/workflow-optimization.md +229 -0
- package/plugin/skills/parallel-dispatch/SKILL.md +308 -0
- package/plugin/skills/project-discovery/SKILL.md +304 -0
- package/plugin/skills/search/SKILL.md +56 -0
- package/plugin/skills/security-audit/SKILL.md +362 -0
- package/plugin/skills/skill-development/.skillfish.json +10 -0
- package/plugin/skills/skill-development/SKILL.md +637 -0
- package/plugin/skills/skill-development/references/skill-creator-original.md +209 -0
- package/plugin/skills/tdd/SKILL.md +273 -0
- package/plugin/skills/terminal-presentation/SKILL.md +395 -0
- package/plugin/skills/test-strategy/SKILL.md +365 -0
- package/plugin/skills/verification-protocol/SKILL.md +256 -0
- package/plugin/skills/visual-explainer/CHANGELOG.md +97 -0
- package/plugin/skills/visual-explainer/LICENSE +21 -0
- package/plugin/skills/visual-explainer/README.md +137 -0
- package/plugin/skills/visual-explainer/SKILL.md +352 -0
- package/plugin/skills/visual-explainer/banner.png +0 -0
- package/plugin/skills/visual-explainer/package.json +11 -0
- package/plugin/skills/visual-explainer/prompts/diff-review.md +68 -0
- package/plugin/skills/visual-explainer/prompts/fact-check.md +63 -0
- package/plugin/skills/visual-explainer/prompts/generate-slides.md +18 -0
- package/plugin/skills/visual-explainer/prompts/generate-web-diagram.md +10 -0
- package/plugin/skills/visual-explainer/prompts/plan-review.md +86 -0
- package/plugin/skills/visual-explainer/prompts/project-recap.md +61 -0
- package/plugin/skills/visual-explainer/references/css-patterns.md +1188 -0
- package/plugin/skills/visual-explainer/references/libraries.md +470 -0
- package/plugin/skills/visual-explainer/references/responsive-nav.md +212 -0
- package/plugin/skills/visual-explainer/references/slide-patterns.md +1403 -0
- package/plugin/skills/visual-explainer/templates/architecture.html +596 -0
- package/plugin/skills/visual-explainer/templates/data-table.html +540 -0
- package/plugin/skills/visual-explainer/templates/mermaid-flowchart.html +435 -0
- package/plugin/skills/visual-explainer/templates/slide-deck.html +913 -0
- package/src/cli.ts +655 -0
- package/src/context/.gitkeep +0 -0
- package/src/context/codebase.ts +393 -0
- package/src/context/injector.ts +797 -0
- package/src/context/memory.ts +187 -0
- package/src/context/session-index.ts +327 -0
- package/src/context/session.ts +152 -0
- package/src/index.ts +47 -0
- package/src/ingestion/.gitkeep +0 -0
- package/src/ingestion/chunker.ts +277 -0
- package/src/ingestion/embedder.ts +167 -0
- package/src/ingestion/git-analyzer.ts +545 -0
- package/src/ingestion/indexer.ts +984 -0
- package/src/ingestion/markdown-chunker.ts +337 -0
- package/src/ingestion/markdown-knowledge.ts +175 -0
- package/src/ingestion/parser.ts +475 -0
- package/src/ingestion/watcher.ts +182 -0
- package/src/knowledge/.gitkeep +0 -0
- package/src/knowledge/hydrator.ts +246 -0
- package/src/knowledge/registry.ts +463 -0
- package/src/knowledge/search.ts +565 -0
- package/src/knowledge/store.ts +262 -0
- package/src/learning/.gitkeep +0 -0
- package/src/learning/confidence.ts +193 -0
- package/src/learning/patterns.ts +360 -0
- package/src/learning/trajectory.ts +268 -0
- package/src/memory/.gitkeep +0 -0
- package/src/memory/memory-compat.ts +233 -0
- package/src/memory/observation-store.ts +224 -0
- package/src/memory/session-tracker.ts +332 -0
- package/src/pipeline/.gitkeep +0 -0
- package/src/pipeline/engine.ts +1139 -0
- package/src/pipeline/events.ts +253 -0
- package/src/pipeline/parallel.ts +394 -0
- package/src/pipeline/state-machine.ts +199 -0
- package/src/query/.gitkeep +0 -0
- package/src/query/graph-queries.ts +262 -0
- package/src/query/hybrid-search.ts +337 -0
- package/src/query/intent-detector.ts +131 -0
- package/src/query/ranking.ts +161 -0
- package/src/server.ts +352 -0
- package/src/storage/.gitkeep +0 -0
- package/src/storage/falkordb-store.ts +388 -0
- package/src/storage/file-cache.ts +141 -0
- package/src/storage/interfaces.ts +201 -0
- package/src/storage/qdrant-store.ts +557 -0
- package/src/storage/schema.ts +139 -0
- package/src/storage/sqlite.ts +168 -0
- package/src/tools/.gitkeep +0 -0
- package/src/tools/collaboration-tools.ts +208 -0
- package/src/tools/context-tools.ts +493 -0
- package/src/tools/graph-tools.ts +295 -0
- package/src/tools/ingestion-tools.ts +122 -0
- package/src/tools/learning-tools.ts +181 -0
- package/src/tools/memory-tools.ts +234 -0
- package/src/tools/phase-tools.ts +1452 -0
- package/src/tools/pipeline-tools.ts +188 -0
- package/src/tools/registration-tools.ts +450 -0
- package/src/util/.gitkeep +0 -0
- package/src/util/circuit-breaker.ts +193 -0
- package/src/util/config.ts +177 -0
- package/src/util/logger.ts +53 -0
- package/src/util/token-counter.ts +52 -0
- package/src/util/types.ts +710 -0
- package/tests/context/.gitkeep +0 -0
- package/tests/integration/.gitkeep +0 -0
- package/tests/knowledge/.gitkeep +0 -0
- package/tests/learning/.gitkeep +0 -0
- package/tests/pipeline/.gitkeep +0 -0
- package/tests/tools/.gitkeep +0 -0
- package/tsconfig.json +21 -0
- package/vitest.config.ts +10 -0
- package/vscode-extension/.vscodeignore +7 -0
- package/vscode-extension/README.md +43 -0
- package/vscode-extension/out/edge-collector.js +274 -0
- package/vscode-extension/out/edge-collector.js.map +1 -0
- package/vscode-extension/out/extension.js +264 -0
- package/vscode-extension/out/extension.js.map +1 -0
- package/vscode-extension/out/forge-client.js +318 -0
- package/vscode-extension/out/forge-client.js.map +1 -0
- package/vscode-extension/package-lock.json +59 -0
- package/vscode-extension/package.json +71 -0
- package/vscode-extension/src/edge-collector.ts +320 -0
- package/vscode-extension/src/extension.ts +269 -0
- package/vscode-extension/src/forge-client.ts +364 -0
- package/vscode-extension/tsconfig.json +19 -0
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: terminal-presentation
|
|
3
|
+
description: This skill should be used for ALL terminal output formatting across the forge system. It defines the universal output standard for agent communication, status updates, summaries, error reports, plan presentations, and all user-facing content. Every forge agent references this skill.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Terminal Presentation Skill
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Define the universal output formatting standard for every agent in the Forge system. All user-facing content -- status updates, interview questions, plan summaries, error reports, verification results, and agent handoff messages -- must follow these rules. Consistency across agents builds trust and makes output scannable.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Visual Hierarchy Rules
|
|
16
|
+
|
|
17
|
+
### Horizontal Rules (`---`)
|
|
18
|
+
|
|
19
|
+
Use `---` to separate major sections of output. Every top-level section boundary gets a horizontal rule. Do not use horizontal rules inside sections -- use headers or blank lines for sub-section separation.
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Section One
|
|
25
|
+
Content here.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Section Two
|
|
30
|
+
Content here.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Headers (`##` and `###`)
|
|
36
|
+
|
|
37
|
+
Use `##` for primary sections and `###` for sub-sections. Do not use `#` (H1) in terminal output -- it is reserved for document titles in written files. Do not go deeper than `###` in terminal output; use bold text or indentation for further nesting.
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
## Primary Section
|
|
41
|
+
|
|
42
|
+
### Sub-Section
|
|
43
|
+
|
|
44
|
+
**Detail point**: Explanation here.
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Blockquotes (`>`)
|
|
48
|
+
|
|
49
|
+
Use blockquotes for three purposes:
|
|
50
|
+
1. **Decision points**: When presenting a decision that requires user input.
|
|
51
|
+
2. **Callouts**: When highlighting a critical finding, warning, or constraint.
|
|
52
|
+
3. **Emphasis**: When a single statement needs to stand apart from surrounding content.
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
> This is a decision point. Choose one of the following options.
|
|
56
|
+
|
|
57
|
+
> WARNING: The existing database schema does not support multi-tenancy.
|
|
58
|
+
> This will require a migration that affects all existing data.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Do not use blockquotes for general content. They lose their emphasis when overused.
|
|
62
|
+
|
|
63
|
+
### Blank Lines
|
|
64
|
+
|
|
65
|
+
Insert one blank line after every header. Insert one blank line between list items only when items are multi-line. Insert two blank lines before a horizontal rule section separator (one blank line + the rule itself). Do not stack blank lines -- two consecutive blank lines is the maximum.
|
|
66
|
+
|
|
67
|
+
### Box-Drawing Characters
|
|
68
|
+
|
|
69
|
+
Use Unicode box-drawing characters for emphasis boxes when presenting critical information, summary panels, or phase boundaries:
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
┌─────────────────────────────────────────────┐
|
|
73
|
+
│ VERIFICATION COMPLETE │
|
|
74
|
+
│ Status: PASSED │
|
|
75
|
+
│ Checks: 7/7 │
|
|
76
|
+
│ Blockers: 0 Warnings: 2 │
|
|
77
|
+
└─────────────────────────────────────────────┘
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Reserve box-drawing for:
|
|
81
|
+
- Final status summaries (pass/fail panels)
|
|
82
|
+
- Phase transition markers
|
|
83
|
+
- Critical alerts that must not be missed
|
|
84
|
+
|
|
85
|
+
Do not use box-drawing for routine content. Overuse dilutes its emphasis.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Agent Identification
|
|
90
|
+
|
|
91
|
+
Every agent must identify itself at the start of its output. Use the agent's role name with a color marker.
|
|
92
|
+
|
|
93
|
+
### Standard Agent Header Format
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
--- {ROLE} ---
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Where `{ROLE}` is the agent's role name in uppercase (e.g., `STRATEGIST`, `ARCHITECT`, `INSPECTOR`, `DESIGNER`).
|
|
100
|
+
|
|
101
|
+
Each agent has an assigned color for its frontmatter. When presenting in environments that support color (and only then), use the assigned color. In plain text environments, rely on the role name alone.
|
|
102
|
+
|
|
103
|
+
Agent color assignments (from agent definitions):
|
|
104
|
+
- **Strategist**: magenta
|
|
105
|
+
- **Product Manager**: cyan
|
|
106
|
+
- **Architect**: blue
|
|
107
|
+
- **Designer**: green
|
|
108
|
+
|
|
109
|
+
Additional agents should declare their color in their agent definition. When no color is assigned, default to no color styling.
|
|
110
|
+
|
|
111
|
+
### Status Update Format
|
|
112
|
+
|
|
113
|
+
When reporting status, use this structure:
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
--- {ROLE} ---
|
|
117
|
+
Phase: {Current Phase}
|
|
118
|
+
Status: {On Track | At Risk | Blocked}
|
|
119
|
+
|
|
120
|
+
## Summary
|
|
121
|
+
{2-4 sentences on what happened since last report}
|
|
122
|
+
|
|
123
|
+
## Completed
|
|
124
|
+
- {Item 1}
|
|
125
|
+
- {Item 2}
|
|
126
|
+
|
|
127
|
+
## Next Action
|
|
128
|
+
- {What happens next}
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Interview Formatting
|
|
136
|
+
|
|
137
|
+
When conducting interviews (using the **interviewing** skill), apply these formatting rules:
|
|
138
|
+
|
|
139
|
+
### Opening Context Summary
|
|
140
|
+
|
|
141
|
+
Before the first question, present a brief context block summarizing what is already known:
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Interview: {Topic}
|
|
147
|
+
|
|
148
|
+
> Context: {1-3 sentences summarizing what is known so far --
|
|
149
|
+
> the vision, prior decisions, or the trigger for this interview.}
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Question Presentation
|
|
155
|
+
|
|
156
|
+
Present exactly one question per message. Frame each question with context from prior answers:
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
Based on your requirement for {X}, I want to clarify {Y}.
|
|
160
|
+
|
|
161
|
+
**{Question text}**
|
|
162
|
+
|
|
163
|
+
> A) **{Option label}** -- {Brief description of this option and its implications}
|
|
164
|
+
> B) **{Option label}** -- {Brief description of this option and its implications}
|
|
165
|
+
> C) **{Option label}** -- {Brief description of this option and its implications}
|
|
166
|
+
> D) **Something else** -- Describe what you have in mind
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Use descriptive option labels, not bare keywords. "A) Server-side rendering -- initial page load served by Node, hydrated on client" is better than "A) SSR."
|
|
170
|
+
|
|
171
|
+
### Recap Formatting
|
|
172
|
+
|
|
173
|
+
At the end of an interview round, present the recap as:
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Interview Recap
|
|
179
|
+
|
|
180
|
+
> Round {N} complete. Here is what we have established:
|
|
181
|
+
|
|
182
|
+
### Decisions
|
|
183
|
+
- **{Topic}**: {Decision} -- {Rationale}
|
|
184
|
+
- **{Topic}**: {Decision} -- {Rationale}
|
|
185
|
+
|
|
186
|
+
### Deferred
|
|
187
|
+
- {Item}: {Why deferred}
|
|
188
|
+
|
|
189
|
+
### Scope
|
|
190
|
+
- **In**: {List of in-scope items}
|
|
191
|
+
- **Out**: {List of out-of-scope items}
|
|
192
|
+
|
|
193
|
+
> Does this accurately capture what we discussed? Anything to correct or add?
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Data Presentation
|
|
201
|
+
|
|
202
|
+
### Lists Over Tables
|
|
203
|
+
|
|
204
|
+
Prefer bulleted or numbered lists over tables for most data presentation. Lists are easier to scan in a terminal, wrap correctly at any width, and do not break when content varies in length.
|
|
205
|
+
|
|
206
|
+
Use tables only when:
|
|
207
|
+
- Data has 3+ columns that are meaningfully related.
|
|
208
|
+
- Comparison across rows is the primary purpose (e.g., trade-off matrices, risk registers).
|
|
209
|
+
- The content in each cell is short (under 30 characters per cell).
|
|
210
|
+
|
|
211
|
+
### Table Formatting (When Used)
|
|
212
|
+
|
|
213
|
+
Keep columns narrow. Abbreviate headers. Align columns with pipes and dashes. Do not attempt complex multi-line cells in terminal tables.
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
| Risk | Likelihood | Impact | Mitigation |
|
|
217
|
+
|---------------|-----------|--------|----------------------|
|
|
218
|
+
| Data loss | Low | High | Automated backups |
|
|
219
|
+
| Auth bypass | Medium | High | Pen test + code audit|
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
If a table would exceed 80 characters wide, either:
|
|
223
|
+
1. Abbreviate content to fit.
|
|
224
|
+
2. Split into multiple narrower tables.
|
|
225
|
+
3. Convert to a list format with bold labels.
|
|
226
|
+
|
|
227
|
+
### Code Blocks
|
|
228
|
+
|
|
229
|
+
Always use fenced code blocks with a language tag when presenting code:
|
|
230
|
+
|
|
231
|
+
````
|
|
232
|
+
```typescript
|
|
233
|
+
const result = await this.service.findAll();
|
|
234
|
+
```
|
|
235
|
+
````
|
|
236
|
+
|
|
237
|
+
For shell commands, use `bash` or `sh` as the language tag:
|
|
238
|
+
|
|
239
|
+
````
|
|
240
|
+
```bash
|
|
241
|
+
npm run db:generate && npm run db:migrate
|
|
242
|
+
```
|
|
243
|
+
````
|
|
244
|
+
|
|
245
|
+
For file paths, configuration snippets, or structured data without a clear language, use `text`:
|
|
246
|
+
|
|
247
|
+
````
|
|
248
|
+
```text
|
|
249
|
+
docs/plans/2026-02-25-notification-system/
|
|
250
|
+
vision.md
|
|
251
|
+
requirements.md
|
|
252
|
+
architecture.md
|
|
253
|
+
xd-plan.md
|
|
254
|
+
```
|
|
255
|
+
````
|
|
256
|
+
|
|
257
|
+
### Progressive Disclosure
|
|
258
|
+
|
|
259
|
+
When presenting complex information, use the bold-summary-then-detail pattern:
|
|
260
|
+
|
|
261
|
+
```
|
|
262
|
+
- **Authentication**: JWT-based with JWKS rotation.
|
|
263
|
+
Uses Auth0 as the identity provider. Tokens validated on every request
|
|
264
|
+
via the AuthGuard. Refresh tokens stored server-side with 7-day TTL.
|
|
265
|
+
|
|
266
|
+
- **Authorization**: Role-based with resource-level permissions.
|
|
267
|
+
Three roles: admin, editor, viewer. Resource ownership checked at the
|
|
268
|
+
service layer. No client-side role enforcement.
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
The bold summary allows scanning. The indented detail is there for those who need it.
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Error and Warning Presentation
|
|
276
|
+
|
|
277
|
+
### Severity Markers
|
|
278
|
+
|
|
279
|
+
Use consistent severity markers for all error and warning output:
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
[BLOCKER] {Description} --> {Suggested fix}
|
|
283
|
+
[MAJOR] {Description} --> {Suggested fix}
|
|
284
|
+
[MINOR] {Description} --> {Suggested fix}
|
|
285
|
+
[INFO] {Description}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### Error Report Structure
|
|
289
|
+
|
|
290
|
+
When presenting verification failures, security findings, or build errors:
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## {Agent} Findings
|
|
296
|
+
|
|
297
|
+
### Blockers (must fix before proceeding)
|
|
298
|
+
- [BLOCKER] **{Location}**: {Description}
|
|
299
|
+
Fix: {Specific action to take}
|
|
300
|
+
|
|
301
|
+
### Major Issues (should fix, may defer with justification)
|
|
302
|
+
- [MAJOR] **{Location}**: {Description}
|
|
303
|
+
Fix: {Specific action to take}
|
|
304
|
+
|
|
305
|
+
### Minor Issues (fix when convenient)
|
|
306
|
+
- [MINOR] **{Location}**: {Description}
|
|
307
|
+
|
|
308
|
+
### Passed Checks
|
|
309
|
+
- {Check name}: PASSED
|
|
310
|
+
- {Check name}: PASSED
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
Always list passed checks after failures. Seeing what passed provides context for what failed and reassures the user that the non-failing areas were actually checked.
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## Escalation to HTML
|
|
320
|
+
|
|
321
|
+
Terminal formatting has limits. When content exceeds what the terminal can present clearly, generate an HTML file and reference it.
|
|
322
|
+
|
|
323
|
+
### When to Escalate to HTML
|
|
324
|
+
|
|
325
|
+
- **Tables with 4+ rows and 4+ columns**: Terminal tables become unreadable at this size.
|
|
326
|
+
- **Architecture diagrams**: System topology, data flow diagrams, module dependency graphs.
|
|
327
|
+
- **Complex comparison matrices**: Feature comparison tables, migration plans with multiple dimensions.
|
|
328
|
+
- **Design system previews**: Color palettes, typography scales, component galleries.
|
|
329
|
+
- **Timeline or Gantt-style views**: Phase plans with dependencies and parallel tracks.
|
|
330
|
+
|
|
331
|
+
### How to Escalate
|
|
332
|
+
|
|
333
|
+
1. Generate a self-contained HTML file (inline CSS, no external dependencies) using a clean, professional visual style.
|
|
334
|
+
2. Write it to the plan folder: `docs/plans/{plan-folder}/{descriptive-name}.html`.
|
|
335
|
+
3. In the terminal, present a brief summary and reference the file:
|
|
336
|
+
|
|
337
|
+
```
|
|
338
|
+
> Full architecture diagram written to:
|
|
339
|
+
> `docs/plans/2026-02-25-notification-system/architecture-diagram.html`
|
|
340
|
+
>
|
|
341
|
+
> Open in a browser for the visual overview. Summary below:
|
|
342
|
+
|
|
343
|
+
- 4 services: API Gateway, Notification Service, Email Worker, WebSocket Server
|
|
344
|
+
- Message broker: SQS with DLQ for failed deliveries
|
|
345
|
+
- Database: Shared RDS Postgres instance, separate schemas per service
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
The terminal gets the summary for quick scanning. The HTML file gets the full visual treatment. Use terminal for interaction; use HTML for complex presentation.
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
## Plan Presentation
|
|
353
|
+
|
|
354
|
+
When presenting a completed plan document (vision, requirements, architecture, XD plan) for user review:
|
|
355
|
+
|
|
356
|
+
1. Open with the document type and a one-line summary.
|
|
357
|
+
2. Present each major section as a collapsible block (bold header + indented content).
|
|
358
|
+
3. Highlight decision points or items needing user confirmation with blockquotes.
|
|
359
|
+
4. End with an explicit prompt for approval or feedback.
|
|
360
|
+
|
|
361
|
+
```
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## Architecture Plan: Notification System
|
|
365
|
+
|
|
366
|
+
> 8 modules, 14 API endpoints, 3 new database tables, 1 message queue.
|
|
367
|
+
> Full plan written to `docs/plans/2026-02-25-notification-system/architecture.md`.
|
|
368
|
+
|
|
369
|
+
### Modules
|
|
370
|
+
- **NotificationModule**: Core notification CRUD and dispatch logic
|
|
371
|
+
- **EmailWorkerModule**: SQS consumer for email delivery via SES
|
|
372
|
+
- **WebSocketModule**: Real-time notification push to connected clients
|
|
373
|
+
...
|
|
374
|
+
|
|
375
|
+
### Key Decisions
|
|
376
|
+
- **Message broker**: SQS over Redis Pub/Sub -- durability and DLQ support
|
|
377
|
+
- **Email provider**: SES -- already in the AWS stack, no additional vendor
|
|
378
|
+
|
|
379
|
+
> Ready to approve this plan? Or would you like to drill into any section?
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
## Formatting Anti-Patterns to Avoid
|
|
387
|
+
|
|
388
|
+
- **Wall of text**: Never present more than 4-5 sentences without a visual break (header, list, blank line, or rule). If content is dense, restructure it as a list.
|
|
389
|
+
- **Excessive decoration**: Do not use box-drawing, blockquotes, and bold all in the same section. Pick the one that best serves the content.
|
|
390
|
+
- **Orphaned headers**: Never place a header with no content below it. If a section has nothing to report, write "None" or "N/A" below the header.
|
|
391
|
+
- **Table abuse**: Do not use tables for 2-column key-value data. Use bold labels instead: `**Database**: PostgreSQL 15`.
|
|
392
|
+
- **Unmarked code**: Never present code, commands, or file paths outside of fenced code blocks. Inline backticks are acceptable for short references within prose.
|
|
393
|
+
- **Emoji in professional output**: Do not use emoji in any Forge agent output. Rely on text markers, box-drawing, and structural hierarchy for visual communication.
|
|
394
|
+
- **Inconsistent severity markers**: Always use the standard markers (`[BLOCKER]`, `[MAJOR]`, `[MINOR]`, `[INFO]`). Do not invent new levels or use synonyms.
|
|
395
|
+
- **Hiding critical information in paragraphs**: If something is a blocker, a decision point, or a status change, it must be in a visually distinct element (blockquote, list item with severity marker, or box). Never bury critical information in the middle of a paragraph.
|