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,304 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-discovery
|
|
3
|
+
description: This skill should be used when exploring and understanding an existing codebase for the first time or when verifying current project patterns. Used by the designer, architect, and inspector agents to read and understand project structure, frameworks, conventions, and existing patterns.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Project Discovery Skill
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Provide a systematic, repeatable methodology for exploring and understanding a codebase. Apply this skill when encountering a project for the first time, when verifying that implementation follows established patterns, or when auditing an existing system for consistency. The output of project discovery is a mental model of the codebase that enables informed decisions by downstream agents (Designer, Architect, Inspector).
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Exploration Methodology
|
|
16
|
+
|
|
17
|
+
Follow these eight steps in order. Each step builds on the previous one. Do not skip steps, but adjust depth based on the agent's needs -- an Architect needs deeper API and data flow analysis; a Designer needs deeper design system analysis; an Inspector needs deeper testing and quality analysis.
|
|
18
|
+
|
|
19
|
+
### Step 1: Project Configuration
|
|
20
|
+
|
|
21
|
+
Read the project's root configuration files to establish the technology stack, dependency landscape, and build toolchain.
|
|
22
|
+
|
|
23
|
+
**Files to read (in priority order)**:
|
|
24
|
+
- `package.json` -- framework, dependencies, scripts, package name, version
|
|
25
|
+
- `tsconfig.json` and `tsconfig.build.json` -- TypeScript configuration, module system, decorator support
|
|
26
|
+
- `nest-cli.json` -- NestJS builder configuration (SWC vs tsc)
|
|
27
|
+
- `.swcrc` -- SWC configuration for testing and building
|
|
28
|
+
- `drizzle.config.ts` -- Database configuration, migration paths
|
|
29
|
+
- `docker-compose.yml` -- Local development services, database configuration
|
|
30
|
+
- `.env.example` or `.env.development` -- Environment variable shape (never read `.env` directly)
|
|
31
|
+
- `Dockerfile` -- Build stages, base images, runtime configuration
|
|
32
|
+
- `bitbucket-pipelines.yml` or `.github/workflows/` -- CI/CD pipeline structure
|
|
33
|
+
- `vitest.config.ts` or `jest.config.ts` -- Test framework configuration
|
|
34
|
+
|
|
35
|
+
**What to extract**:
|
|
36
|
+
- Framework and version (NestJS, React, Next.js, etc.)
|
|
37
|
+
- Module system (CommonJS vs ESM)
|
|
38
|
+
- Builder (SWC, tsc, esbuild, webpack)
|
|
39
|
+
- Database driver and ORM (Drizzle, Prisma, TypeORM, etc.)
|
|
40
|
+
- Test framework and configuration
|
|
41
|
+
- Key scripts: `start`, `build`, `test`, `db:migrate`, `db:generate`, `lint`
|
|
42
|
+
- Dev dependencies that signal tooling choices (Storybook, Playwright, Husky, etc.)
|
|
43
|
+
|
|
44
|
+
### Step 2: Directory Structure
|
|
45
|
+
|
|
46
|
+
Map the project's file organization to identify the architectural pattern.
|
|
47
|
+
|
|
48
|
+
**Commands to run**:
|
|
49
|
+
- List the top-level directory structure.
|
|
50
|
+
- List the `src/` directory structure (or equivalent entry directory).
|
|
51
|
+
- Identify any monorepo markers (`packages/`, `apps/`, `libs/`, workspace config in `package.json`).
|
|
52
|
+
|
|
53
|
+
**Patterns to identify**:
|
|
54
|
+
- **Modular NestJS**: `src/{module-name}/{module-name}.module.ts` + controller + service + DTOs
|
|
55
|
+
- **Feature-based**: `src/features/{feature}/` with co-located components, services, tests
|
|
56
|
+
- **Layer-based**: `src/controllers/`, `src/services/`, `src/repositories/`
|
|
57
|
+
- **Monorepo**: `packages/{package-name}/` or `apps/{app-name}/`
|
|
58
|
+
- **Flat**: Everything in `src/` with no sub-organization (flag as a concern)
|
|
59
|
+
|
|
60
|
+
**What to extract**:
|
|
61
|
+
- Architectural pattern name and description
|
|
62
|
+
- Module/feature list with brief purpose for each
|
|
63
|
+
- Shared/common directories and their purpose
|
|
64
|
+
- Test file location pattern (co-located vs separate `test/` directory)
|
|
65
|
+
- Configuration and infrastructure directories
|
|
66
|
+
|
|
67
|
+
### Step 3: Entry Points
|
|
68
|
+
|
|
69
|
+
Identify how the application bootstraps and what happens at startup.
|
|
70
|
+
|
|
71
|
+
**Files to read**:
|
|
72
|
+
- `src/main.ts` -- NestJS bootstrap, middleware, global pipes, global filters, CORS, dotenv loading
|
|
73
|
+
- `src/app.module.ts` -- Root module, imported modules, global providers
|
|
74
|
+
- `src/app.controller.ts` -- Root routes (if any)
|
|
75
|
+
|
|
76
|
+
**What to extract**:
|
|
77
|
+
- Bootstrap sequence: what happens before `NestFactory.create()`?
|
|
78
|
+
- Global middleware, pipes, filters, interceptors
|
|
79
|
+
- Module import order and any conditional imports
|
|
80
|
+
- Environment variable loading strategy (dotenv timing, ConfigModule usage)
|
|
81
|
+
- Port configuration, CORS settings, API prefix
|
|
82
|
+
|
|
83
|
+
### Step 4: Routing and Request Flow
|
|
84
|
+
|
|
85
|
+
Trace how HTTP requests (or other input) flow through the system.
|
|
86
|
+
|
|
87
|
+
**Discovery method**:
|
|
88
|
+
- Search for `@Controller` decorators to find all route handlers.
|
|
89
|
+
- Search for `@Get`, `@Post`, `@Put`, `@Patch`, `@Delete` to map endpoints.
|
|
90
|
+
- Search for `@UseGuards` to identify authentication/authorization patterns.
|
|
91
|
+
- Search for `@UseInterceptors` to identify cross-cutting concerns.
|
|
92
|
+
- Search for `@UsePipes` to identify validation patterns.
|
|
93
|
+
|
|
94
|
+
**What to extract**:
|
|
95
|
+
- Complete route table: method, path, controller, handler, guards
|
|
96
|
+
- Authentication strategy (JWT, API key, session, etc.)
|
|
97
|
+
- Authorization model (RBAC, ABAC, resource-based, etc.)
|
|
98
|
+
- Validation approach (class-validator DTOs, Zod, manual)
|
|
99
|
+
- Error handling pattern (exception filters, global handlers)
|
|
100
|
+
- API versioning strategy (if any)
|
|
101
|
+
|
|
102
|
+
### Step 5: State and Data Management
|
|
103
|
+
|
|
104
|
+
Understand how data flows through the application and how state is managed.
|
|
105
|
+
|
|
106
|
+
**Files to read**:
|
|
107
|
+
- `src/drizzle/` or `src/database/` -- ORM configuration, schema definitions, providers
|
|
108
|
+
- `src/**/schema.ts` or `src/**/entities/` -- Data model definitions
|
|
109
|
+
- `drizzle/` migration directory -- Migration history
|
|
110
|
+
- Any `src/**/dto/` directories -- Data transfer object shapes
|
|
111
|
+
|
|
112
|
+
**What to extract**:
|
|
113
|
+
- Database schema: tables, columns, types, constraints, indexes, relations
|
|
114
|
+
- ORM pattern: repository pattern, direct query, query builder
|
|
115
|
+
- Connection management: connection pooling, lazy initialization, Proxy patterns
|
|
116
|
+
- Migration strategy: how migrations are generated and applied
|
|
117
|
+
- Seed data: is there a seeding mechanism?
|
|
118
|
+
- Caching layer: Redis, in-memory, none
|
|
119
|
+
|
|
120
|
+
### Step 6: Design System (Frontend Projects)
|
|
121
|
+
|
|
122
|
+
For projects with a frontend, discover the existing design system and component library.
|
|
123
|
+
|
|
124
|
+
**Files and directories to search**:
|
|
125
|
+
- `src/theme/` or `src/styles/` -- Theme definitions, CSS variables, tokens
|
|
126
|
+
- `src/components/` -- Component library structure
|
|
127
|
+
- `src/design-system/` or `src/ui/` -- Dedicated design system directories
|
|
128
|
+
- `.storybook/` -- Storybook configuration
|
|
129
|
+
- `tailwind.config.*` -- Tailwind customization
|
|
130
|
+
- Any `xd-bible.md` or `xd-plan.md` -- Existing design documentation
|
|
131
|
+
- `src/**/*.css`, `src/**/*.scss`, `src/**/*.styled.*` -- Styling approach
|
|
132
|
+
|
|
133
|
+
**What to extract**:
|
|
134
|
+
- Styling methodology: CSS Modules, styled-components, Tailwind, CSS variables, SCSS
|
|
135
|
+
- Color system: palette definition, semantic tokens, dark mode support
|
|
136
|
+
- Typography: font families, scale, weight usage
|
|
137
|
+
- Spacing: scale system (4px grid, 8px grid, custom)
|
|
138
|
+
- Component hierarchy: atoms, molecules, organisms (or equivalent)
|
|
139
|
+
- Existing component inventory with usage patterns
|
|
140
|
+
- Responsive strategy: breakpoints, mobile-first vs desktop-first
|
|
141
|
+
- Animation/transition patterns
|
|
142
|
+
|
|
143
|
+
### Step 7: Testing Setup
|
|
144
|
+
|
|
145
|
+
Understand the testing infrastructure and existing test patterns.
|
|
146
|
+
|
|
147
|
+
**Files to read**:
|
|
148
|
+
- `vitest.config.ts` or `jest.config.ts` -- Test framework configuration
|
|
149
|
+
- Any `*.spec.ts` or `*.test.ts` files (read 2-3 representative examples)
|
|
150
|
+
- `test/` directory structure (if separate from source)
|
|
151
|
+
- Any `e2e/` or `integration/` test directories
|
|
152
|
+
|
|
153
|
+
**What to extract**:
|
|
154
|
+
- Test framework and runner (Vitest, Jest, Mocha)
|
|
155
|
+
- Test file naming convention (`.spec.ts` vs `.test.ts`)
|
|
156
|
+
- Test organization pattern (co-located vs centralized)
|
|
157
|
+
- Mocking patterns (what is mocked, how)
|
|
158
|
+
- Coverage configuration and current coverage levels
|
|
159
|
+
- E2E test framework (Playwright, Cypress, Supertest)
|
|
160
|
+
- Test database strategy (in-memory, Docker, shared dev DB)
|
|
161
|
+
- Fixture and factory patterns
|
|
162
|
+
|
|
163
|
+
### Step 8: Build and Deployment
|
|
164
|
+
|
|
165
|
+
Understand how the application is built, packaged, and deployed.
|
|
166
|
+
|
|
167
|
+
**Files to read**:
|
|
168
|
+
- `Dockerfile` -- Build stages, runtime image, exposed ports
|
|
169
|
+
- `docker-compose.yml` -- Local development services
|
|
170
|
+
- `bitbucket-pipelines.yml` or CI config -- Pipeline stages, deployment targets
|
|
171
|
+
- `helm/` or `charts/` -- Kubernetes deployment configuration
|
|
172
|
+
- `k8s/` -- Raw Kubernetes manifests (if any)
|
|
173
|
+
- Any `Makefile` or build scripts
|
|
174
|
+
|
|
175
|
+
**What to extract**:
|
|
176
|
+
- Build pipeline: stages, parallelism, caching
|
|
177
|
+
- Container strategy: multi-stage build, base image, runtime user
|
|
178
|
+
- Deployment target: Kubernetes (EKS), ECS, Lambda, bare EC2
|
|
179
|
+
- Helm chart structure: values, templates, dependencies
|
|
180
|
+
- Environment promotion: dev -> staging -> production pipeline
|
|
181
|
+
- Secret management: External Secrets, AWS Secrets Manager, env vars
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Pattern Extraction
|
|
186
|
+
|
|
187
|
+
After completing the eight-step exploration, synthesize the findings into pattern observations.
|
|
188
|
+
|
|
189
|
+
### Naming Conventions
|
|
190
|
+
|
|
191
|
+
Document the project's naming conventions:
|
|
192
|
+
- File naming: kebab-case, camelCase, PascalCase
|
|
193
|
+
- Class naming: PascalCase with suffix (e.g., `NotificationService`, `UserController`)
|
|
194
|
+
- Variable naming: camelCase, snake_case
|
|
195
|
+
- Database naming: snake_case for tables and columns, singular vs plural table names
|
|
196
|
+
- API route naming: kebab-case, camelCase, plural nouns for resources
|
|
197
|
+
- Environment variable naming: UPPER_SNAKE_CASE with prefix
|
|
198
|
+
|
|
199
|
+
### Import Patterns
|
|
200
|
+
|
|
201
|
+
Document how the project handles imports:
|
|
202
|
+
- Path aliases (`@/`, `~/`, `#/`)
|
|
203
|
+
- Barrel exports (`index.ts` files)
|
|
204
|
+
- Relative vs absolute imports
|
|
205
|
+
- Module boundary enforcement (do modules import from each other directly, or through public APIs?)
|
|
206
|
+
|
|
207
|
+
### Error Handling Patterns
|
|
208
|
+
|
|
209
|
+
Document the project's error handling approach:
|
|
210
|
+
- Custom exception classes
|
|
211
|
+
- Exception filter hierarchy
|
|
212
|
+
- Error response shape
|
|
213
|
+
- Logging integration
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Architecture Fingerprinting
|
|
218
|
+
|
|
219
|
+
Produce a concise architecture fingerprint -- a summary that any agent can read to understand the project's shape without re-running discovery.
|
|
220
|
+
|
|
221
|
+
### Fingerprint Format
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
## Architecture Fingerprint
|
|
225
|
+
|
|
226
|
+
- **Framework**: NestJS 10.x with SWC builder
|
|
227
|
+
- **Language**: TypeScript 5.x, CommonJS module system
|
|
228
|
+
- **Database**: PostgreSQL 15 via Drizzle ORM (postgres.js driver)
|
|
229
|
+
- **Auth**: JWT with JWKS (Auth0), role-based authorization
|
|
230
|
+
- **API Style**: REST, JSON, `/api/v1` prefix
|
|
231
|
+
- **Testing**: Vitest with SWC plugin, co-located spec files
|
|
232
|
+
- **Deployment**: Docker -> EKS via Helm + ArgoCD
|
|
233
|
+
- **Modules**: {count} modules: {list with one-line descriptions}
|
|
234
|
+
- **Design System**: {description or "N/A for backend-only projects"}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Write this fingerprint to the plan folder as part of the architecture or design document, so other agents do not need to re-discover what has already been mapped.
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## What to Document vs. What to Skip
|
|
242
|
+
|
|
243
|
+
### Always Document
|
|
244
|
+
- Framework versions and configuration choices
|
|
245
|
+
- Architectural pattern and module boundaries
|
|
246
|
+
- Database schema and migration state
|
|
247
|
+
- API routes and authentication strategy
|
|
248
|
+
- Naming conventions that deviate from defaults
|
|
249
|
+
- Design system tokens and component inventory (frontend)
|
|
250
|
+
- Testing patterns and coverage state
|
|
251
|
+
- Build and deployment pipeline
|
|
252
|
+
|
|
253
|
+
### Skip (Do Not Spend Time On)
|
|
254
|
+
- Individual utility function implementations (unless they reveal a pattern)
|
|
255
|
+
- Third-party library internals
|
|
256
|
+
- Generated code (migration SQL files, compiled output)
|
|
257
|
+
- IDE configuration files (`.vscode/`, `.idea/`)
|
|
258
|
+
- Detailed reading of every test file (read 2-3 representative examples)
|
|
259
|
+
- Git history (unless asked to investigate a regression)
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Red Flags to Surface
|
|
264
|
+
|
|
265
|
+
During discovery, actively look for and report these issues:
|
|
266
|
+
|
|
267
|
+
- **Stubs and placeholders**: Functions that return hardcoded data, TODO comments in production code, `throw new Error('Not implemented')`. These indicate incomplete work.
|
|
268
|
+
- **Dead code**: Unused imports, unreachable functions, commented-out blocks. These indicate maintenance debt.
|
|
269
|
+
- **Inconsistent patterns**: Two modules using different naming conventions, two services using different error handling approaches. These indicate drift.
|
|
270
|
+
- **Missing tests**: Modules with no corresponding test files, or test files with zero assertions. These indicate quality gaps.
|
|
271
|
+
- **Hardcoded configuration**: Database URLs, API keys, or service endpoints hardcoded in source files instead of environment variables. These indicate deployment risks.
|
|
272
|
+
- **Circular dependencies**: Module A imports from Module B which imports from Module A. These indicate architectural issues.
|
|
273
|
+
- **Oversized modules**: A single module with 10+ services or a single service with 500+ lines. These indicate decomposition opportunities.
|
|
274
|
+
- **Missing error handling**: Catch blocks that swallow errors, API endpoints with no validation, database queries with no error handling.
|
|
275
|
+
- **Security concerns**: Secrets in source code, disabled CORS, missing authentication on endpoints that should be protected.
|
|
276
|
+
|
|
277
|
+
Report red flags with severity, location, and a brief note on impact. Do not attempt to fix them during discovery -- that is the implementation agents' job. Discovery is read-only.
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Adapting Depth by Agent Role
|
|
282
|
+
|
|
283
|
+
### Architect Discovery
|
|
284
|
+
Focus on Steps 1-5 and Step 8 (configuration, structure, entry points, routing, data, deployment). Skim Step 6 (design system) and Step 7 (testing) unless the project is frontend-heavy. The Architect needs to understand system boundaries, data flow, and infrastructure.
|
|
285
|
+
|
|
286
|
+
### Designer Discovery
|
|
287
|
+
Focus on Steps 1-2 and Step 6 (configuration, structure, design system). Skim Steps 3-5 (entry points, routing, data) for context but do not deep-dive into backend patterns. The Designer needs to understand the frontend stack, existing components, and visual language.
|
|
288
|
+
|
|
289
|
+
### Inspector Discovery
|
|
290
|
+
Focus on Steps 4-5 and Step 7 (routing, data, testing). Read Steps 1-3 for context. The Inspector needs to understand what should be tested, what is currently tested, and where quality gaps exist. Step 8 (deployment) matters for verifying that builds pass and configurations are correct.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Output Requirements
|
|
295
|
+
|
|
296
|
+
Discovery must produce structured output, not just internal understanding. Write findings using the **terminal-presentation** skill for user-facing summaries, and write detailed findings to plan documents when requested by the invoking agent.
|
|
297
|
+
|
|
298
|
+
At minimum, produce:
|
|
299
|
+
1. An architecture fingerprint (see format above).
|
|
300
|
+
2. A list of discovered modules/features with one-line descriptions.
|
|
301
|
+
3. A list of red flags (if any) with severity and location.
|
|
302
|
+
4. A list of patterns and conventions observed.
|
|
303
|
+
|
|
304
|
+
If the invoking agent requests a full discovery document, write it to `docs/plans/{plan-folder}/discovery.md` with all eight steps documented.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: search
|
|
3
|
+
description: Search code and knowledge across indexed repos using AI-ranked results. Far better than grep.
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /search — Intelligent Code & Knowledge Search
|
|
8
|
+
|
|
9
|
+
Search an indexed codebase using Forge's 5-signal ranking engine. Returns results ranked by vector similarity, graph centrality, recency, change frequency, and observation count — far more relevant than raw text matching.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
The repo must be registered and indexed with Forge. If not, suggest running `/index-repo` first.
|
|
14
|
+
|
|
15
|
+
## Behavior
|
|
16
|
+
|
|
17
|
+
**Code search** (default): Call `mcp__dk-forge__get_codebase_context` with the user's query.
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/search authentication middleware
|
|
21
|
+
/search how do API endpoints handle errors
|
|
22
|
+
/search database connection setup
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Knowledge search**: When the query is about patterns, decisions, or conventions rather than specific code, call `mcp__dk-forge__search_knowledge`.
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
/search pattern: how do we handle auth
|
|
29
|
+
/search decision: why did we choose postgres
|
|
30
|
+
/search convention: naming for API routes
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Combined search**: For broad queries, run both `get_codebase_context` and `search_knowledge` in parallel and present unified results.
|
|
34
|
+
|
|
35
|
+
## Query Interpretation
|
|
36
|
+
|
|
37
|
+
- Identify intent: code location vs. pattern/convention vs. architecture decision.
|
|
38
|
+
- For code queries, pass `detail: "full"` to get complete file contents. Use `detail: "skeleton"` for overview, `detail: "paths"` for just file paths.
|
|
39
|
+
- For knowledge queries, optionally filter by `category`: `gotcha`, `pattern`, `decision`, `convention`.
|
|
40
|
+
- Set `include_tests: true` only when the user explicitly asks about test code.
|
|
41
|
+
|
|
42
|
+
## Output Format
|
|
43
|
+
|
|
44
|
+
Present results clearly:
|
|
45
|
+
1. **File path** with line numbers for code results.
|
|
46
|
+
2. **Relevance context** — why this result matched (which signals contributed).
|
|
47
|
+
3. **Code snippet** — the relevant section, not the entire file.
|
|
48
|
+
4. For knowledge results, include the confidence score and category.
|
|
49
|
+
|
|
50
|
+
## Cross-Repo Search
|
|
51
|
+
|
|
52
|
+
When working in a multi-repo environment, results from other indexed repos may appear. Include the repo name when presenting cross-repo results. Disable with `include_cross_repo: false` if the user only wants current-repo results.
|
|
53
|
+
|
|
54
|
+
## Fallback
|
|
55
|
+
|
|
56
|
+
If the repo is not indexed (no Qdrant collections), fall back to built-in `Grep` and `Glob` tools and suggest indexing for better results.
|