mindforge-cc 11.8.2 → 11.9.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/.agent/mindforge/wf-orchestrate-review.md +35 -0
- package/.agent/mindforge/wf-verification-loop.md +45 -0
- package/.agent/mindforge/wf-workflow-optimizer.md +51 -0
- package/.agent/skills/article-illustrator/SKILL.md +7 -7
- package/.agent/skills/arxiv/SKILL.md +6 -6
- package/.agent/skills/code-wiki/SKILL.md +11 -11
- package/.agent/skills/concept-diagrams/SKILL.md +6 -6
- package/.agent/skills/concept-diagrams/examples/apartment-floor-plan-conversion.md +244 -0
- package/.agent/skills/concept-diagrams/examples/automated-password-reset-flow.md +276 -0
- package/.agent/skills/concept-diagrams/examples/autonomous-llm-research-agent-flow.md +240 -0
- package/.agent/skills/concept-diagrams/examples/banana-journey-tree-to-smoothie.md +161 -0
- package/.agent/skills/concept-diagrams/examples/commercial-aircraft-structure.md +209 -0
- package/.agent/skills/concept-diagrams/examples/cpu-ooo-microarchitecture.md +236 -0
- package/.agent/skills/concept-diagrams/examples/electricity-grid-flow.md +182 -0
- package/.agent/skills/concept-diagrams/examples/feature-film-production-pipeline.md +172 -0
- package/.agent/skills/concept-diagrams/examples/hospital-emergency-department-flow.md +165 -0
- package/.agent/skills/concept-diagrams/examples/ml-benchmark-grouped-bar-chart.md +114 -0
- package/.agent/skills/concept-diagrams/examples/place-order-uml-sequence.md +325 -0
- package/.agent/skills/concept-diagrams/examples/smart-city-infrastructure.md +173 -0
- package/.agent/skills/concept-diagrams/examples/smartphone-layer-anatomy.md +154 -0
- package/.agent/skills/concept-diagrams/examples/sn2-reaction-mechanism.md +247 -0
- package/.agent/skills/concept-diagrams/examples/wind-turbine-structure.md +338 -0
- package/.agent/skills/concept-diagrams/templates/template.html +174 -0
- package/.agent/skills/domain-intel/SKILL.md +7 -7
- package/.agent/skills/duckduckgo-search/SKILL.md +17 -17
- package/.agent/skills/github-auth/scripts/gh-env.sh +66 -0
- package/.agent/skills/github-code-review/SKILL.md +9 -9
- package/.agent/skills/github-pr-workflow/SKILL.md +3 -3
- package/.agent/skills/godmode/SKILL.md +8 -8
- package/.agent/skills/jupyter-live-kernel/SKILL.md +3 -3
- package/.agent/skills/kanban-orchestrator/SKILL.md +10 -10
- package/.agent/skills/kanban-worker/SKILL.md +6 -6
- package/.agent/skills/llm-wiki/SKILL.md +7 -7
- package/.agent/skills/mindforge-autonomous/SKILL.md +1 -1
- package/.agent/skills/mindforge-complete-milestone/SKILL.md +1 -1
- package/.agent/skills/mindforge-discuss-phase/SKILL.md +1 -1
- package/.agent/skills/mindforge-do/SKILL.md +1 -1
- package/.agent/skills/mindforge-execute-phase/SKILL.md +1 -1
- package/.agent/skills/mindforge-list-workspaces/SKILL.md +1 -1
- package/.agent/skills/mindforge-manager/SKILL.md +1 -1
- package/.agent/skills/mindforge-neural-orchestrator/SKILL.md +1 -1
- package/.agent/skills/mindforge-new-milestone/SKILL.md +4 -4
- package/.agent/skills/mindforge-new-project/SKILL.md +4 -4
- package/.agent/skills/mindforge-new-workspace/SKILL.md +1 -1
- package/.agent/skills/mindforge-note/SKILL.md +1 -1
- package/.agent/skills/mindforge-plan-phase/SKILL.md +1 -1
- package/.agent/skills/mindforge-profile-user/SKILL.md +1 -1
- package/.agent/skills/mindforge-remove-workspace/SKILL.md +1 -1
- package/.agent/skills/mindforge-research-phase/SKILL.md +1 -1
- package/.agent/skills/mindforge-ui-phase/SKILL.md +1 -1
- package/.agent/skills/mindforge-ui-review/SKILL.md +1 -1
- package/.agent/skills/mindforge-verify-work/SKILL.md +1 -1
- package/.agent/skills/mindforge-workspace-isolated/SKILL.md +1 -1
- package/.agent/skills/node-inspect-debugger/SKILL.md +1 -1
- package/.agent/skills/obsidian/SKILL.md +15 -15
- package/.agent/skills/osint-investigation/SKILL.md +3 -2
- package/.agent/skills/osint-investigation/references/sources/courtlistener.md +98 -0
- package/.agent/skills/osint-investigation/references/sources/gdelt.md +104 -0
- package/.agent/skills/osint-investigation/references/sources/icij-offshore.md +104 -0
- package/.agent/skills/osint-investigation/references/sources/nyc-acris.md +90 -0
- package/.agent/skills/osint-investigation/references/sources/ofac-sdn.md +92 -0
- package/.agent/skills/osint-investigation/references/sources/opencorporates.md +103 -0
- package/.agent/skills/osint-investigation/references/sources/sec-edgar.md +83 -0
- package/.agent/skills/osint-investigation/references/sources/senate-ld.md +89 -0
- package/.agent/skills/osint-investigation/references/sources/usaspending.md +97 -0
- package/.agent/skills/osint-investigation/references/sources/wayback.md +93 -0
- package/.agent/skills/osint-investigation/references/sources/wikipedia.md +107 -0
- package/.agent/skills/osint-investigation/scripts/_http.py +82 -0
- package/.agent/skills/osint-investigation/scripts/_normalize.py +67 -0
- package/.agent/skills/osint-investigation/scripts/build_findings.py +221 -0
- package/.agent/skills/osint-investigation/scripts/entity_resolution.py +228 -0
- package/.agent/skills/osint-investigation/scripts/fetch_courtlistener.py +149 -0
- package/.agent/skills/osint-investigation/scripts/fetch_gdelt.py +161 -0
- package/.agent/skills/osint-investigation/scripts/fetch_icij_offshore.py +234 -0
- package/.agent/skills/osint-investigation/scripts/fetch_nyc_acris.py +203 -0
- package/.agent/skills/osint-investigation/scripts/fetch_ofac_sdn.py +175 -0
- package/.agent/skills/osint-investigation/scripts/fetch_opencorporates.py +191 -0
- package/.agent/skills/osint-investigation/scripts/fetch_sec_edgar.py +184 -0
- package/.agent/skills/osint-investigation/scripts/fetch_senate_ld.py +146 -0
- package/.agent/skills/osint-investigation/scripts/fetch_usaspending.py +170 -0
- package/.agent/skills/osint-investigation/scripts/fetch_wayback.py +142 -0
- package/.agent/skills/osint-investigation/scripts/fetch_wikipedia.py +266 -0
- package/.agent/skills/osint-investigation/scripts/timing_analysis.py +252 -0
- package/.agent/skills/oss-forensics/SKILL.md +10 -9
- package/.agent/skills/oss-forensics/scripts/evidence-store.py +313 -0
- package/.agent/skills/parallel-cli/SKILL.md +2 -2
- package/.agent/skills/pinggy-tunnel/SKILL.md +3 -3
- package/.agent/skills/pixel-art/SKILL.md +2 -2
- package/.agent/skills/plan/SKILL.md +10 -10
- package/.agent/skills/requesting-code-review/SKILL.md +4 -6
- package/.agent/skills/research-paper-writing/SKILL.md +32 -32
- package/.agent/skills/rest-graphql-debug/SKILL.md +31 -32
- package/.agent/skills/s6-container-supervision/SKILL.md +1 -1
- package/.agent/skills/scrapling/SKILL.md +1 -1
- package/.agent/skills/sherlock/SKILL.md +1 -1
- package/.agent/skills/simplify-code/SKILL.md +5 -7
- package/.agent/skills/skill-authoring/SKILL.md +4 -4
- package/.agent/skills/spike/SKILL.md +11 -13
- package/.agent/skills/subagent-driven-development/SKILL.md +7 -11
- package/.agent/skills/systematic-debugging/SKILL.md +13 -14
- package/.agent/skills/test-driven-development/SKILL.md +6 -7
- package/.agent/skills/video-orchestrator/SKILL.md +1 -1
- package/.agent/skills/web-pentest/SKILL.md +7 -7
- package/.mindforge/config.json +3 -2
- package/.mindforge/dynamic-workflows/REGISTRY.md +4 -1
- package/.mindforge/dynamic-workflows/index.json +910 -840
- package/.mindforge/dynamic-workflows/scripts/accessibility-audit.js +88 -90
- package/.mindforge/dynamic-workflows/scripts/ai-model-eval.js +59 -61
- package/.mindforge/dynamic-workflows/scripts/api-contract-test.js +87 -85
- package/.mindforge/dynamic-workflows/scripts/api-migration.js +120 -122
- package/.mindforge/dynamic-workflows/scripts/architecture-modernization.js +84 -86
- package/.mindforge/dynamic-workflows/scripts/code-audit.js +75 -77
- package/.mindforge/dynamic-workflows/scripts/code-explainer.js +99 -101
- package/.mindforge/dynamic-workflows/scripts/competitive-analysis.js +62 -64
- package/.mindforge/dynamic-workflows/scripts/competitive-teardown.js +106 -108
- package/.mindforge/dynamic-workflows/scripts/cost-analysis.js +78 -80
- package/.mindforge/dynamic-workflows/scripts/data-pipeline-validate.js +47 -49
- package/.mindforge/dynamic-workflows/scripts/database-migration.js +85 -87
- package/.mindforge/dynamic-workflows/scripts/debug-detective.js +97 -99
- package/.mindforge/dynamic-workflows/scripts/dependency-health.js +81 -83
- package/.mindforge/dynamic-workflows/scripts/design-system-audit.js +84 -86
- package/.mindforge/dynamic-workflows/scripts/documentation-gen.js +65 -67
- package/.mindforge/dynamic-workflows/scripts/feature-planner.js +78 -80
- package/.mindforge/dynamic-workflows/scripts/incident-response.js +81 -83
- package/.mindforge/dynamic-workflows/scripts/multi-repo-sync.js +49 -51
- package/.mindforge/dynamic-workflows/scripts/mutation-testing.js +113 -115
- package/.mindforge/dynamic-workflows/scripts/onboard-codebase.js +79 -81
- package/.mindforge/dynamic-workflows/scripts/orchestrate-review.js +115 -0
- package/.mindforge/dynamic-workflows/scripts/perf-optimize.js +97 -99
- package/.mindforge/dynamic-workflows/scripts/pr-review.js +61 -63
- package/.mindforge/dynamic-workflows/scripts/refactor-plan.js +88 -90
- package/.mindforge/dynamic-workflows/scripts/release-prep.js +79 -81
- package/.mindforge/dynamic-workflows/scripts/security-hardening.js +117 -119
- package/.mindforge/dynamic-workflows/scripts/security-threat-model.js +119 -121
- package/.mindforge/dynamic-workflows/scripts/tdd-sprint.js +80 -82
- package/.mindforge/dynamic-workflows/scripts/tech-evaluation.js +50 -52
- package/.mindforge/dynamic-workflows/scripts/test-coverage-gap.js +68 -70
- package/.mindforge/dynamic-workflows/scripts/ux-heuristic-audit.js +89 -91
- package/.mindforge/dynamic-workflows/scripts/verification-loop.js +138 -0
- package/.mindforge/dynamic-workflows/scripts/workflow-optimizer.js +136 -0
- package/.mindforge/dynamic-workflows/scripts/writer-reviewer.js +63 -65
- package/.mindforge/memory/sync-manifest.json +1 -1
- package/.mindforge/personas/advisor-researcher.md +2 -2
- package/.mindforge/personas/api-load-tester.md +1 -1
- package/.mindforge/personas/authentication-architect.md +1 -1
- package/.mindforge/personas/backup-recovery-specialist.md +1 -1
- package/.mindforge/personas/build-optimizer.md +1 -1
- package/.mindforge/personas/caching-strategist.md +1 -1
- package/.mindforge/personas/chaos-engineer.md +1 -1
- package/.mindforge/personas/compliance-auditor.md +1 -1
- package/.mindforge/personas/config-management-expert.md +1 -1
- package/.mindforge/personas/coverage-specialist.md +1 -1
- package/.mindforge/personas/debug-specialist.md +2 -2
- package/.mindforge/personas/debugger.md +2 -2
- package/.mindforge/personas/dependency-auditor.md +1 -1
- package/.mindforge/personas/developer.md +1 -1
- package/.mindforge/personas/devops-engineer.md +1 -1
- package/.mindforge/personas/executor.md +1 -1
- package/.mindforge/personas/go-specialist.md +1 -1
- package/.mindforge/personas/incident-commander.md +1 -1
- package/.mindforge/personas/java-specialist.md +1 -1
- package/.mindforge/personas/kubernetes-debugger.md +1 -1
- package/.mindforge/personas/logging-architect.md +1 -1
- package/.mindforge/personas/mf-planner.md +1 -1
- package/.mindforge/personas/mf-researcher.md +1 -1
- package/.mindforge/personas/mf-reviewer.md +1 -1
- package/.mindforge/personas/nyquist-auditor.md +1 -1
- package/.mindforge/personas/observability-engineer.md +1 -1
- package/.mindforge/personas/performance-optimizer.md +1 -1
- package/.mindforge/personas/phase-researcher.md +5 -5
- package/.mindforge/personas/planner.md +1 -1
- package/.mindforge/personas/project-researcher.md +2 -2
- package/.mindforge/personas/python-specialist.md +1 -1
- package/.mindforge/personas/qa-engineer.md +1 -1
- package/.mindforge/personas/release-manager.md +1 -1
- package/.mindforge/personas/research-agent.md +4 -4
- package/.mindforge/personas/roadmapper-extend.md +1 -1
- package/.mindforge/personas/rust-specialist.md +1 -1
- package/.mindforge/personas/security-reviewer.md +1 -1
- package/.mindforge/personas/tech-writer.md +1 -1
- package/.mindforge/personas/typescript-wizard.md +1 -1
- package/.mindforge/personas/ui-researcher.md +1 -1
- package/.mindforge/skills/accessibility/SKILL.md +3 -3
- package/.mindforge/skills/agent-architecture-audit/SKILL.md +11 -0
- package/.mindforge/skills/agent-loops/SKILL.md +1 -1
- package/.mindforge/skills/arxiv/SKILL.md +6 -6
- package/.mindforge/skills/arxiv/scripts/search_arxiv.py +114 -0
- package/.mindforge/skills/code-tour/SKILL.md +2 -2
- package/.mindforge/skills/code-wiki/SKILL.md +11 -11
- package/.mindforge/skills/code-wiki/templates/README.md +31 -0
- package/.mindforge/skills/code-wiki/templates/architecture.md +30 -0
- package/.mindforge/skills/code-wiki/templates/getting-started.md +47 -0
- package/.mindforge/skills/code-wiki/templates/module.md +38 -0
- package/.mindforge/skills/concept-diagrams/SKILL.md +6 -6
- package/.mindforge/skills/concept-diagrams/examples/apartment-floor-plan-conversion.md +244 -0
- package/.mindforge/skills/concept-diagrams/examples/automated-password-reset-flow.md +276 -0
- package/.mindforge/skills/concept-diagrams/examples/autonomous-llm-research-agent-flow.md +240 -0
- package/.mindforge/skills/concept-diagrams/examples/banana-journey-tree-to-smoothie.md +161 -0
- package/.mindforge/skills/concept-diagrams/examples/commercial-aircraft-structure.md +209 -0
- package/.mindforge/skills/concept-diagrams/examples/cpu-ooo-microarchitecture.md +236 -0
- package/.mindforge/skills/concept-diagrams/examples/electricity-grid-flow.md +182 -0
- package/.mindforge/skills/concept-diagrams/examples/feature-film-production-pipeline.md +172 -0
- package/.mindforge/skills/concept-diagrams/examples/hospital-emergency-department-flow.md +165 -0
- package/.mindforge/skills/concept-diagrams/examples/ml-benchmark-grouped-bar-chart.md +114 -0
- package/.mindforge/skills/concept-diagrams/examples/place-order-uml-sequence.md +325 -0
- package/.mindforge/skills/concept-diagrams/examples/smart-city-infrastructure.md +173 -0
- package/.mindforge/skills/concept-diagrams/examples/smartphone-layer-anatomy.md +154 -0
- package/.mindforge/skills/concept-diagrams/examples/sn2-reaction-mechanism.md +247 -0
- package/.mindforge/skills/concept-diagrams/examples/wind-turbine-structure.md +338 -0
- package/.mindforge/skills/concept-diagrams/references/dashboard-patterns.md +43 -0
- package/.mindforge/skills/concept-diagrams/references/infrastructure-patterns.md +144 -0
- package/.mindforge/skills/concept-diagrams/references/physical-shape-cookbook.md +42 -0
- package/.mindforge/skills/concept-diagrams/templates/template.html +174 -0
- package/.mindforge/skills/creative-ideation/references/full-prompt-library.md +110 -0
- package/.mindforge/skills/documentation/SKILL.md +1 -1
- package/.mindforge/skills/domain-intel/SKILL.md +7 -7
- package/.mindforge/skills/domain-intel/scripts/domain_intel.py +397 -0
- package/.mindforge/skills/duckduckgo-search/SKILL.md +17 -17
- package/.mindforge/skills/duckduckgo-search/scripts/duckduckgo.sh +28 -0
- package/.mindforge/skills/environment-management/SKILL.md +1 -1
- package/.mindforge/skills/github-code-review/SKILL.md +9 -9
- package/.mindforge/skills/github-code-review/references/review-output-template.md +74 -0
- package/.mindforge/skills/github-issues/templates/bug-report.md +35 -0
- package/.mindforge/skills/github-issues/templates/feature-request.md +31 -0
- package/.mindforge/skills/github-pr-workflow/SKILL.md +3 -3
- package/.mindforge/skills/github-pr-workflow/references/ci-troubleshooting.md +183 -0
- package/.mindforge/skills/github-pr-workflow/references/conventional-commits.md +71 -0
- package/.mindforge/skills/github-pr-workflow/templates/pr-body-bugfix.md +35 -0
- package/.mindforge/skills/github-pr-workflow/templates/pr-body-feature.md +33 -0
- package/.mindforge/skills/incident-response/SKILL.md +1 -1
- package/.mindforge/skills/jupyter-live-kernel/SKILL.md +3 -3
- package/.mindforge/skills/kanban-orchestrator/SKILL.md +10 -10
- package/.mindforge/skills/kanban-worker/SKILL.md +6 -6
- package/.mindforge/skills/meme-generation/SKILL.md +1 -1
- package/.mindforge/skills/meme-generation/scripts/generate_meme.py +470 -0
- package/.mindforge/skills/meme-generation/scripts/templates.json +97 -0
- package/.mindforge/skills/obsidian/SKILL.md +15 -15
- package/.mindforge/skills/orch-pipeline/SKILL.md +2 -2
- package/.mindforge/skills/osint-investigation/SKILL.md +3 -2
- package/.mindforge/skills/osint-investigation/references/sources/courtlistener.md +98 -0
- package/.mindforge/skills/osint-investigation/references/sources/gdelt.md +104 -0
- package/.mindforge/skills/osint-investigation/references/sources/icij-offshore.md +104 -0
- package/.mindforge/skills/osint-investigation/references/sources/nyc-acris.md +90 -0
- package/.mindforge/skills/osint-investigation/references/sources/ofac-sdn.md +92 -0
- package/.mindforge/skills/osint-investigation/references/sources/opencorporates.md +103 -0
- package/.mindforge/skills/osint-investigation/references/sources/sec-edgar.md +83 -0
- package/.mindforge/skills/osint-investigation/references/sources/senate-ld.md +89 -0
- package/.mindforge/skills/osint-investigation/references/sources/usaspending.md +97 -0
- package/.mindforge/skills/osint-investigation/references/sources/wayback.md +93 -0
- package/.mindforge/skills/osint-investigation/references/sources/wikipedia.md +107 -0
- package/.mindforge/skills/osint-investigation/scripts/_http.py +82 -0
- package/.mindforge/skills/osint-investigation/scripts/_normalize.py +67 -0
- package/.mindforge/skills/osint-investigation/scripts/build_findings.py +221 -0
- package/.mindforge/skills/osint-investigation/scripts/entity_resolution.py +228 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_courtlistener.py +149 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_gdelt.py +161 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_icij_offshore.py +234 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_nyc_acris.py +203 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_ofac_sdn.py +175 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_opencorporates.py +191 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_sec_edgar.py +184 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_senate_ld.py +146 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_usaspending.py +170 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_wayback.py +142 -0
- package/.mindforge/skills/osint-investigation/scripts/fetch_wikipedia.py +266 -0
- package/.mindforge/skills/osint-investigation/scripts/timing_analysis.py +252 -0
- package/.mindforge/skills/osint-investigation/templates/source-template.md +59 -0
- package/.mindforge/skills/oss-forensics/SKILL.md +6 -6
- package/.mindforge/skills/oss-forensics/references/evidence-types.md +89 -0
- package/.mindforge/skills/oss-forensics/references/github-archive-guide.md +184 -0
- package/.mindforge/skills/oss-forensics/references/investigation-templates.md +131 -0
- package/.mindforge/skills/oss-forensics/references/recovery-techniques.md +164 -0
- package/.mindforge/skills/oss-forensics/scripts/evidence-store.py +313 -0
- package/.mindforge/skills/oss-forensics/templates/forensic-report.md +151 -0
- package/.mindforge/skills/oss-forensics/templates/malicious-package-report.md +43 -0
- package/.mindforge/skills/pixel-art/SKILL.md +2 -2
- package/.mindforge/skills/pixel-art/references/palettes.md +49 -0
- package/.mindforge/skills/plan/SKILL.md +10 -10
- package/.mindforge/skills/requesting-code-review/SKILL.md +4 -6
- package/.mindforge/skills/research-paper-writing/SKILL.md +32 -32
- package/.mindforge/skills/research-paper-writing/references/autoreason-methodology.md +394 -0
- package/.mindforge/skills/research-paper-writing/references/checklists.md +434 -0
- package/.mindforge/skills/research-paper-writing/references/citation-workflow.md +563 -0
- package/.mindforge/skills/research-paper-writing/references/experiment-patterns.md +728 -0
- package/.mindforge/skills/research-paper-writing/references/human-evaluation.md +476 -0
- package/.mindforge/skills/research-paper-writing/references/paper-types.md +481 -0
- package/.mindforge/skills/research-paper-writing/references/reviewer-guidelines.md +433 -0
- package/.mindforge/skills/research-paper-writing/references/sources.md +191 -0
- package/.mindforge/skills/research-paper-writing/references/writing-guide.md +474 -0
- package/.mindforge/skills/research-paper-writing/templates/README.md +251 -0
- package/.mindforge/skills/scrapling/SKILL.md +1 -1
- package/.mindforge/skills/security-review/SKILL.md +1 -1
- package/.mindforge/skills/sherlock/SKILL.md +1 -1
- package/.mindforge/skills/simplify-code/SKILL.md +5 -7
- package/.mindforge/skills/spike/SKILL.md +11 -13
- package/.mindforge/skills/subagent-driven-development/SKILL.md +7 -11
- package/.mindforge/skills/subagent-driven-development/references/context-budget-discipline.md +53 -0
- package/.mindforge/skills/subagent-driven-development/references/gates-taxonomy.md +93 -0
- package/.mindforge/skills/systematic-debugging/SKILL.md +13 -14
- package/.mindforge/skills/test-driven-development/SKILL.md +7 -8
- package/.mindforge/skills/testing-standards/SKILL.md +1 -1
- package/.mindforge/skills/web-pentest/SKILL.md +2 -2
- package/.mindforge/skills/web-pentest/references/bypass-techniques.md +133 -0
- package/.mindforge/skills/web-pentest/references/exploitation-techniques.md +204 -0
- package/.mindforge/skills/web-pentest/references/scope-enforcement.md +110 -0
- package/.mindforge/skills/web-pentest/references/vuln-taxonomy.md +81 -0
- package/.mindforge/skills/web-pentest/templates/authorization.md +69 -0
- package/.mindforge/skills/web-pentest/templates/pentest-report.md +178 -0
- package/.mindforge/skills/writing-skills/SKILL.md +4 -3
- package/CHANGELOG.md +35 -0
- package/MINDFORGE.md +3 -3
- package/README.md +9 -7
- package/RELEASENOTES.md +65 -2
- package/SECURITY.md +5 -3
- package/bin/autonomous/auto-runner.js +5 -2
- package/bin/engine/skill-loader.js +4 -0
- package/bin/governance/rbac.js +4 -0
- package/bin/memory/eis-client.js +1 -0
- package/bin/mindforge-cli.js +5 -0
- package/bin/models/bedrock-provider.js +192 -0
- package/bin/models/model-client.js +19 -0
- package/bin/spawn-agent.js +9 -2
- package/docs/commands-reference.md +68 -6
- package/docs/faq.md +38 -1
- package/docs/getting-started.md +27 -12
- package/docs/sdk-reference.md +36 -3
- package/docs/troubleshooting.md +59 -1
- package/docs/user-guide.md +7 -4
- package/package.json +3 -3
- package/.claude/commands/mindforge/skill-tdd.md +0 -53
- package/.claude/commands/mindforge/skills-index.md +0 -118
- package/.claude/commands/mindforge/systematic-debug.md +0 -60
- package/.claude/commands/mindforge/wf-accessibility-audit.md +0 -31
- package/.claude/commands/mindforge/wf-ai-model-eval.md +0 -31
- package/.claude/commands/mindforge/wf-api-migration.md +0 -31
- package/.claude/commands/mindforge/wf-architecture-modernization.md +0 -32
- package/.claude/commands/mindforge/wf-catalog.md +0 -59
- package/.claude/commands/mindforge/wf-code-audit.md +0 -31
- package/.claude/commands/mindforge/wf-code-explainer.md +0 -31
- package/.claude/commands/mindforge/wf-competitive-analysis.md +0 -31
- package/.claude/commands/mindforge/wf-competitive-teardown.md +0 -31
- package/.claude/commands/mindforge/wf-cost-analysis.md +0 -31
- package/.claude/commands/mindforge/wf-data-pipeline-validate.md +0 -31
- package/.claude/commands/mindforge/wf-database-migration.md +0 -31
- package/.claude/commands/mindforge/wf-debug-detective.md +0 -32
- package/.claude/commands/mindforge/wf-design-system-audit.md +0 -31
- package/.claude/commands/mindforge/wf-documentation-gen.md +0 -31
- package/.claude/commands/mindforge/wf-feature-planner.md +0 -31
- package/.claude/commands/mindforge/wf-incident-response.md +0 -31
- package/.claude/commands/mindforge/wf-multi-repo-sync.md +0 -31
- package/.claude/commands/mindforge/wf-mutation-testing.md +0 -31
- package/.claude/commands/mindforge/wf-onboard-codebase.md +0 -31
- package/.claude/commands/mindforge/wf-perf-optimize.md +0 -31
- package/.claude/commands/mindforge/wf-pr-review.md +0 -31
- package/.claude/commands/mindforge/wf-refactor-plan.md +0 -31
- package/.claude/commands/mindforge/wf-release-prep.md +0 -31
- package/.claude/commands/mindforge/wf-security-threat-model.md +0 -31
- package/.claude/commands/mindforge/wf-tdd-sprint.md +0 -31
- package/.claude/commands/mindforge/wf-tech-evaluation.md +0 -31
- package/.claude/commands/mindforge/wf-ux-heuristic-audit.md +0 -31
- package/.claude/commands/mindforge/wf-writer-reviewer.md +0 -30
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Search arXiv and display results in a clean format.
|
|
3
|
+
|
|
4
|
+
Usage:
|
|
5
|
+
python search_arxiv.py "GRPO reinforcement learning"
|
|
6
|
+
python search_arxiv.py "GRPO reinforcement learning" --max 10
|
|
7
|
+
python search_arxiv.py "GRPO reinforcement learning" --sort date
|
|
8
|
+
python search_arxiv.py --author "Yann LeCun" --max 5
|
|
9
|
+
python search_arxiv.py --category cs.AI --sort date --max 10
|
|
10
|
+
python search_arxiv.py --id 2402.03300
|
|
11
|
+
python search_arxiv.py --id 2402.03300,2401.12345
|
|
12
|
+
"""
|
|
13
|
+
import sys
|
|
14
|
+
import urllib.request
|
|
15
|
+
import urllib.parse
|
|
16
|
+
import xml.etree.ElementTree as ET
|
|
17
|
+
|
|
18
|
+
NS = {'a': 'http://www.w3.org/2005/Atom'}
|
|
19
|
+
|
|
20
|
+
def search(query=None, author=None, category=None, ids=None, max_results=5, sort="relevance"):
|
|
21
|
+
params = {}
|
|
22
|
+
|
|
23
|
+
if ids:
|
|
24
|
+
params['id_list'] = ids
|
|
25
|
+
else:
|
|
26
|
+
parts = []
|
|
27
|
+
if query:
|
|
28
|
+
parts.append(f'all:{urllib.parse.quote(query)}')
|
|
29
|
+
if author:
|
|
30
|
+
parts.append(f'au:{urllib.parse.quote(author)}')
|
|
31
|
+
if category:
|
|
32
|
+
parts.append(f'cat:{category}')
|
|
33
|
+
if not parts:
|
|
34
|
+
print("Error: provide a query, --author, --category, or --id")
|
|
35
|
+
sys.exit(1)
|
|
36
|
+
params['search_query'] = '+AND+'.join(parts)
|
|
37
|
+
|
|
38
|
+
params['max_results'] = str(max_results)
|
|
39
|
+
|
|
40
|
+
sort_map = {"relevance": "relevance", "date": "submittedDate", "updated": "lastUpdatedDate"}
|
|
41
|
+
params['sortBy'] = sort_map.get(sort, sort)
|
|
42
|
+
params['sortOrder'] = 'descending'
|
|
43
|
+
|
|
44
|
+
url = "https://export.arxiv.org/api/query?" + "&".join(f"{k}={v}" for k, v in params.items())
|
|
45
|
+
|
|
46
|
+
req = urllib.request.Request(url, headers={'User-Agent': 'HermesAgent/1.0'})
|
|
47
|
+
with urllib.request.urlopen(req, timeout=15) as resp:
|
|
48
|
+
data = resp.read()
|
|
49
|
+
|
|
50
|
+
root = ET.fromstring(data)
|
|
51
|
+
entries = root.findall('a:entry', NS)
|
|
52
|
+
|
|
53
|
+
if not entries:
|
|
54
|
+
print("No results found.")
|
|
55
|
+
return
|
|
56
|
+
|
|
57
|
+
total = root.find('{http://a9.com/-/spec/opensearch/1.1/}totalResults')
|
|
58
|
+
if total is not None:
|
|
59
|
+
print(f"Found {total.text} results (showing {len(entries)})\n")
|
|
60
|
+
|
|
61
|
+
for i, entry in enumerate(entries):
|
|
62
|
+
title = entry.find('a:title', NS).text.strip().replace('\n', ' ')
|
|
63
|
+
raw_id = entry.find('a:id', NS).text.strip()
|
|
64
|
+
full_id = raw_id.split('/abs/')[-1] if '/abs/' in raw_id else raw_id
|
|
65
|
+
arxiv_id = full_id.split('v')[0] # base ID for links
|
|
66
|
+
published = entry.find('a:published', NS).text[:10]
|
|
67
|
+
updated = entry.find('a:updated', NS).text[:10]
|
|
68
|
+
authors = ', '.join(a.find('a:name', NS).text for a in entry.findall('a:author', NS))
|
|
69
|
+
summary = entry.find('a:summary', NS).text.strip().replace('\n', ' ')
|
|
70
|
+
cats = ', '.join(c.get('term') for c in entry.findall('a:category', NS))
|
|
71
|
+
|
|
72
|
+
version = full_id[len(arxiv_id):] if full_id != arxiv_id else ""
|
|
73
|
+
print(f"{i+1}. {title}")
|
|
74
|
+
print(f" ID: {arxiv_id}{version} | Published: {published} | Updated: {updated}")
|
|
75
|
+
print(f" Authors: {authors}")
|
|
76
|
+
print(f" Categories: {cats}")
|
|
77
|
+
print(f" Abstract: {summary[:300]}{'...' if len(summary) > 300 else ''}")
|
|
78
|
+
print(f" Links: https://arxiv.org/abs/{arxiv_id} | https://arxiv.org/pdf/{arxiv_id}")
|
|
79
|
+
print()
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
if __name__ == "__main__":
|
|
83
|
+
args = sys.argv[1:]
|
|
84
|
+
if not args or args[0] in {"-h", "--help"}:
|
|
85
|
+
print(__doc__)
|
|
86
|
+
sys.exit(0)
|
|
87
|
+
|
|
88
|
+
query = None
|
|
89
|
+
author = None
|
|
90
|
+
category = None
|
|
91
|
+
ids = None
|
|
92
|
+
max_results = 5
|
|
93
|
+
sort = "relevance"
|
|
94
|
+
|
|
95
|
+
i = 0
|
|
96
|
+
positional = []
|
|
97
|
+
while i < len(args):
|
|
98
|
+
if args[i] == "--max" and i + 1 < len(args):
|
|
99
|
+
max_results = int(args[i + 1]); i += 2
|
|
100
|
+
elif args[i] == "--sort" and i + 1 < len(args):
|
|
101
|
+
sort = args[i + 1]; i += 2
|
|
102
|
+
elif args[i] == "--author" and i + 1 < len(args):
|
|
103
|
+
author = args[i + 1]; i += 2
|
|
104
|
+
elif args[i] == "--category" and i + 1 < len(args):
|
|
105
|
+
category = args[i + 1]; i += 2
|
|
106
|
+
elif args[i] == "--id" and i + 1 < len(args):
|
|
107
|
+
ids = args[i + 1]; i += 2
|
|
108
|
+
else:
|
|
109
|
+
positional.append(args[i]); i += 1
|
|
110
|
+
|
|
111
|
+
if positional:
|
|
112
|
+
query = " ".join(positional)
|
|
113
|
+
|
|
114
|
+
search(query=query, author=author, category=category, ids=ids, max_results=max_results, sort=sort)
|
|
@@ -55,7 +55,7 @@ stop, building understanding progressively.
|
|
|
55
55
|
|
|
56
56
|
**Stop format (mandatory for each stop):**
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
````markdown
|
|
59
59
|
## Stop N: [Descriptive Title]
|
|
60
60
|
|
|
61
61
|
**File:** `src/path/to/file.ts` (lines 42-87)
|
|
@@ -81,7 +81,7 @@ function handleRequest(ctx: Context) {
|
|
|
81
81
|
**Checkpoint:** After this stop, you should understand:
|
|
82
82
|
- [Concrete understanding goal 1]
|
|
83
83
|
- [Concrete understanding goal 2]
|
|
84
|
-
|
|
84
|
+
````
|
|
85
85
|
|
|
86
86
|
**Progressive complexity rules:**
|
|
87
87
|
- Stop 1-3: Configuration, entry points, "what runs when the app starts"
|
|
@@ -9,7 +9,7 @@ triggers: code wiki, document codebase, knowledge wiki, explain codebase, codeba
|
|
|
9
9
|
|
|
10
10
|
# Code Wiki Skill
|
|
11
11
|
|
|
12
|
-
Generate a comprehensive wiki for any codebase — overview, architecture, per-module deep-dives, Mermaid class and sequence diagrams. Inspired by Google CodeWiki, but works on local repos, private repos, and any language. Uses only existing available tools (`
|
|
12
|
+
Generate a comprehensive wiki for any codebase — overview, architecture, per-module deep-dives, Mermaid class and sequence diagrams. Inspired by Google CodeWiki, but works on local repos, private repos, and any language. Uses only existing available tools (`Bash`, `Read`, `Grep`, `Write`); no Docker, no external services, no extra dependencies.
|
|
13
13
|
|
|
14
14
|
This skill produces **reference documentation** (what/how). It does not produce strategic narrative (why — that's a different skill).
|
|
15
15
|
|
|
@@ -22,7 +22,7 @@ This skill produces **reference documentation** (what/how). It does not produce
|
|
|
22
22
|
|
|
23
23
|
Do NOT use this for:
|
|
24
24
|
- Single-file or single-function documentation — just answer directly
|
|
25
|
-
- API reference for one specific endpoint — use `
|
|
25
|
+
- API reference for one specific endpoint — use `Read` and answer inline
|
|
26
26
|
- Strategic "why does this exist" narrative — different skill, different purpose
|
|
27
27
|
- Codebases the user is actively developing in this session — just answer questions as they come
|
|
28
28
|
|
|
@@ -34,7 +34,7 @@ Do NOT use this for:
|
|
|
34
34
|
|
|
35
35
|
## How to Run
|
|
36
36
|
|
|
37
|
-
Invoke through the `
|
|
37
|
+
Invoke through the `Bash` tool from the target repo's root, then use `Read` / `Grep` / `Write` to produce the wiki. Default output location is `~/.agent/wikis/<repo-name>/`. Only write into the repo (`docs/wiki/`) when the user explicitly requests it.
|
|
38
38
|
|
|
39
39
|
## Quick Reference
|
|
40
40
|
|
|
@@ -78,13 +78,13 @@ REPO_NAME=$(basename "$PWD")
|
|
|
78
78
|
Then set the output dir:
|
|
79
79
|
|
|
80
80
|
```bash
|
|
81
|
-
OUTPUT_DIR="$HOME/.
|
|
81
|
+
OUTPUT_DIR="$HOME/.mindforge/wikis/$REPO_NAME"
|
|
82
82
|
mkdir -p "$OUTPUT_DIR/modules" "$OUTPUT_DIR/diagrams"
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
### 2. Scan repo structure
|
|
86
86
|
|
|
87
|
-
Use the `
|
|
87
|
+
Use the `Bash` tool for the shell work, `Read` for manifests:
|
|
88
88
|
|
|
89
89
|
```bash
|
|
90
90
|
# Shallow tree first
|
|
@@ -107,7 +107,7 @@ pygount --format=summary \
|
|
|
107
107
|
. 2>/dev/null || true
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
-
Then `
|
|
110
|
+
Then `Read` the relevant manifests (`package.json`, `pyproject.toml`, `setup.py`, `Cargo.toml`, `go.mod`, `pom.xml`, `build.gradle`) and the project README. Use `search_files target='files'` to find them rather than guessing names.
|
|
111
111
|
|
|
112
112
|
### 3. Pick modules to document
|
|
113
113
|
|
|
@@ -128,7 +128,7 @@ State the module list to the user before generating per-module docs on big repos
|
|
|
128
128
|
|
|
129
129
|
### 4. Write `README.md`
|
|
130
130
|
|
|
131
|
-
`
|
|
131
|
+
`Read` the actual project README plus the top 2–3 entry-point files. Then `Write`:
|
|
132
132
|
|
|
133
133
|
````markdown
|
|
134
134
|
# <Project Name>
|
|
@@ -208,7 +208,7 @@ Cap at ~20 nodes per diagram. Split into sub-diagrams if larger.
|
|
|
208
208
|
|
|
209
209
|
### 6. Write per-module docs in `modules/`
|
|
210
210
|
|
|
211
|
-
For each selected module, inspect its layout with `ls`, identify 3–5 most important files (by size, by being named `core.py` / `main.py` / `__init__.py`, by being imported a lot), then `
|
|
211
|
+
For each selected module, inspect its layout with `ls`, identify 3–5 most important files (by size, by being named `core.py` / `main.py` / `__init__.py`, by being imported a lot), then `Read` those files (use `offset` / `limit` to read only what you need; prefer `Grep` for specific symbols).
|
|
212
212
|
|
|
213
213
|
````markdown
|
|
214
214
|
# Module: `<module>`
|
|
@@ -245,7 +245,7 @@ signatures, not full implementations.>
|
|
|
245
245
|
|
|
246
246
|
### 7. Write `diagrams/class-diagram.md`
|
|
247
247
|
|
|
248
|
-
Pick the 5–10 most important classes/types. `
|
|
248
|
+
Pick the 5–10 most important classes/types. `Read` them, then write:
|
|
249
249
|
|
|
250
250
|
````markdown
|
|
251
251
|
# Class Diagram
|
|
@@ -392,7 +392,7 @@ Generating a full wiki for a 500K-LOC monorepo is wildly token-expensive. Defaul
|
|
|
392
392
|
|
|
393
393
|
- Initial scan: max depth 3 directories
|
|
394
394
|
- Per-module docs: cap at 10 modules unless user expands scope
|
|
395
|
-
- Per-file reads: prefer `
|
|
395
|
+
- Per-file reads: prefer `Grep` for symbols + `Read` with `offset`/`limit` over full reads
|
|
396
396
|
- Skip vendored code (`vendor/`, `third_party/`, generated code, `_pb2.py`, `.min.js`)
|
|
397
397
|
|
|
398
398
|
If the user says "do the whole thing exhaustively", believe them — but ballpark the cost first: "this repo has ~340 source files, comprehensive coverage will be expensive — confirm?"
|
|
@@ -409,7 +409,7 @@ Full incremental-regeneration is a future enhancement — for now, regenerating
|
|
|
409
409
|
|
|
410
410
|
## Pitfalls
|
|
411
411
|
|
|
412
|
-
- **Fabricating components.** Every diagram node and claimed function call must be in the source. `
|
|
412
|
+
- **Fabricating components.** Every diagram node and claimed function call must be in the source. `Read` before writing. The single biggest failure mode for auto-generated docs is plausible-sounding fabrication.
|
|
413
413
|
- **Generic AI prose.** "This module is responsible for..." is content-free. Say what the module actually does in domain-specific terms.
|
|
414
414
|
- **Restating code as prose.** A module doc that says "the `process` function processes things by calling `process_item` on each item" is worse than just linking to the function.
|
|
415
415
|
- **Mermaid > 50 nodes.** They don't render legibly. Split them.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# {{PROJECT_NAME}}
|
|
2
|
+
|
|
3
|
+
{{ONE_PARAGRAPH_DESCRIPTION}}
|
|
4
|
+
|
|
5
|
+
## Key Concepts
|
|
6
|
+
|
|
7
|
+
- **{{CONCEPT_1}}** — {{ONE_LINE}}
|
|
8
|
+
- **{{CONCEPT_2}}** — {{ONE_LINE}}
|
|
9
|
+
- **{{CONCEPT_3}}** — {{ONE_LINE}}
|
|
10
|
+
|
|
11
|
+
## Entry Points
|
|
12
|
+
|
|
13
|
+
- [`{{PATH_1}}`]({{LINK_1}}) — {{WHAT_IT_DOES}}
|
|
14
|
+
- [`{{PATH_2}}`]({{LINK_2}}) — {{WHAT_IT_DOES}}
|
|
15
|
+
|
|
16
|
+
## High-Level Architecture
|
|
17
|
+
|
|
18
|
+
{{TWO_TO_THREE_SENTENCES}}
|
|
19
|
+
|
|
20
|
+
See [architecture.md](architecture.md) for the full picture.
|
|
21
|
+
|
|
22
|
+
## Module Map
|
|
23
|
+
|
|
24
|
+
| Module | Purpose |
|
|
25
|
+
|---|---|
|
|
26
|
+
| [`{{MODULE_1}}`](modules/{{MODULE_1}}.md) | {{ONE_LINE_PURPOSE}} |
|
|
27
|
+
| [`{{MODULE_2}}`](modules/{{MODULE_2}}.md) | {{ONE_LINE_PURPOSE}} |
|
|
28
|
+
|
|
29
|
+
## Getting Started
|
|
30
|
+
|
|
31
|
+
See [getting-started.md](getting-started.md).
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
{{TWO_TO_THREE_PARAGRAPHS_SHAPE_OF_SYSTEM}}
|
|
4
|
+
|
|
5
|
+
## Components
|
|
6
|
+
|
|
7
|
+
- **{{COMPONENT_1}}** — {{ONE_TO_TWO_SENTENCES}} See [`modules/{{MODULE}}.md`](modules/{{MODULE}}.md).
|
|
8
|
+
- **{{COMPONENT_2}}** — {{ONE_TO_TWO_SENTENCES}}
|
|
9
|
+
|
|
10
|
+
## System Diagram
|
|
11
|
+
|
|
12
|
+
```mermaid
|
|
13
|
+
flowchart TD
|
|
14
|
+
User([User]) --> Entry[Entry Point]
|
|
15
|
+
Entry --> Core[Core Engine]
|
|
16
|
+
Core --> StorageA[(Database)]
|
|
17
|
+
Core --> ExternalAPI{{External API}}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Data Flow
|
|
21
|
+
|
|
22
|
+
1. **{{STEP_1}}** — [`{{FILE}}`]({{LINK}})
|
|
23
|
+
2. **{{STEP_2}}** — [`{{FILE}}`]({{LINK}})
|
|
24
|
+
3. **{{STEP_3}}** — [`{{FILE}}`]({{LINK}})
|
|
25
|
+
|
|
26
|
+
## Key Design Decisions
|
|
27
|
+
|
|
28
|
+
- {{DECISION_1}}
|
|
29
|
+
- {{DECISION_2}}
|
|
30
|
+
- {{DECISION_3}}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
## Prerequisites
|
|
4
|
+
|
|
5
|
+
- {{LANGUAGE_RUNTIME_VERSION}}
|
|
6
|
+
- {{DEPENDENCY}}
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
{{INSTALL_COMMANDS}}
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## First Run
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
{{FIRST_RUN_COMMAND}}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
You should see {{EXPECTED_OUTPUT}}.
|
|
21
|
+
|
|
22
|
+
## Common Workflows
|
|
23
|
+
|
|
24
|
+
### {{WORKFLOW_1}}
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
{{COMMANDS}}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### {{WORKFLOW_2}}
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
{{COMMANDS}}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Configuration
|
|
37
|
+
|
|
38
|
+
Key config files and settings:
|
|
39
|
+
|
|
40
|
+
- `{{CONFIG_FILE}}` — {{WHAT_IT_CONTROLS}}
|
|
41
|
+
- Env var `{{VAR}}` — {{WHAT_IT_CONTROLS}}
|
|
42
|
+
|
|
43
|
+
## Where to Go Next
|
|
44
|
+
|
|
45
|
+
- Architecture overview: [architecture.md](architecture.md)
|
|
46
|
+
- Module reference: [README.md#module-map](README.md#module-map)
|
|
47
|
+
- Diagrams: [diagrams/](diagrams/)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Module: `{{MODULE_NAME}}`
|
|
2
|
+
|
|
3
|
+
{{ONE_TO_TWO_SENTENCE_PURPOSE}}
|
|
4
|
+
|
|
5
|
+
## Responsibilities
|
|
6
|
+
|
|
7
|
+
- {{BULLET_1}}
|
|
8
|
+
- {{BULLET_2}}
|
|
9
|
+
- {{BULLET_3}}
|
|
10
|
+
|
|
11
|
+
## Key Files
|
|
12
|
+
|
|
13
|
+
- [`{{PATH_1}}`]({{LINK_1}}) — {{WHAT_IT_DOES}}
|
|
14
|
+
- [`{{PATH_2}}`]({{LINK_2}}) — {{WHAT_IT_DOES}}
|
|
15
|
+
|
|
16
|
+
## Public API
|
|
17
|
+
|
|
18
|
+
### `{{FUNCTION_NAME}}({{SIGNATURE}})`
|
|
19
|
+
|
|
20
|
+
{{ONE_LINE_DESCRIPTION}}
|
|
21
|
+
|
|
22
|
+
**Parameters:**
|
|
23
|
+
- `{{PARAM}}` ({{TYPE}}) — {{DESCRIPTION}}
|
|
24
|
+
|
|
25
|
+
**Returns:** {{TYPE}} — {{DESCRIPTION}}
|
|
26
|
+
|
|
27
|
+
## Internal Structure
|
|
28
|
+
|
|
29
|
+
{{HOW_THE_MODULE_IS_ORGANIZED}}
|
|
30
|
+
|
|
31
|
+
## Dependencies
|
|
32
|
+
|
|
33
|
+
- **Used by:** {{OTHER_MODULES}}
|
|
34
|
+
- **Uses:** {{OTHER_MODULES_AND_LIBS}}
|
|
35
|
+
|
|
36
|
+
## Notable Patterns / Gotchas
|
|
37
|
+
|
|
38
|
+
- {{ANYTHING_NON_OBVIOUS}}
|
|
@@ -40,9 +40,9 @@ If a more specialized skill is available for the subject, prefer that. If none f
|
|
|
40
40
|
|
|
41
41
|
Optional: if the user wants a browsable gallery of multiple diagrams, see "Local Preview Server" at the bottom.
|
|
42
42
|
|
|
43
|
-
Load the HTML template:
|
|
43
|
+
Load the HTML template with `Read` (path relative to this skill's own directory):
|
|
44
44
|
```
|
|
45
|
-
|
|
45
|
+
Read(".mindforge/skills/concept-diagrams/templates/template.html")
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
The template embeds the full CSS design system (`c-*` color classes, text classes, light/dark variables, arrow marker styles). The SVG you generate relies on these classes being present on the hosting page.
|
|
@@ -254,7 +254,7 @@ Write a single `.html` file the user can open directly. No server, no dependenci
|
|
|
254
254
|
|
|
255
255
|
```python
|
|
256
256
|
# 1. Load the template
|
|
257
|
-
template =
|
|
257
|
+
template = Read(".mindforge/skills/concept-diagrams/templates/template.html")
|
|
258
258
|
|
|
259
259
|
# 2. Fill in title, subtitle, and paste your SVG
|
|
260
260
|
html = template.replace(
|
|
@@ -266,7 +266,7 @@ html = template.replace(
|
|
|
266
266
|
)
|
|
267
267
|
|
|
268
268
|
# 3. Write to a user-chosen path (or ./ by default)
|
|
269
|
-
|
|
269
|
+
Write("./sn2-mechanism.html", html)
|
|
270
270
|
```
|
|
271
271
|
|
|
272
272
|
Tell the user how to open it:
|
|
@@ -329,9 +329,9 @@ The `examples/` directory ships 15 complete, tested diagrams. Browse them for wo
|
|
|
329
329
|
| `electricity-grid-flow.md` | Multi-stage flow | Voltage hierarchy, flow markers |
|
|
330
330
|
| `ml-benchmark-grouped-bar-chart.md` | Chart | Grouped bars, dual axis |
|
|
331
331
|
|
|
332
|
-
Load any example with
|
|
332
|
+
Load any example with `Read`:
|
|
333
333
|
```
|
|
334
|
-
|
|
334
|
+
Read(".mindforge/skills/concept-diagrams/examples/<filename>")
|
|
335
335
|
```
|
|
336
336
|
|
|
337
337
|
---
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# Apartment Floor Plan: 3 BHK to 4 BHK Conversion
|
|
2
|
+
|
|
3
|
+
An architectural floor plan showing a 1,500 sq ft apartment with proposed modifications to convert from 3 BHK to 4 BHK. Demonstrates architectural drawing conventions, room layouts, proposed changes with dotted lines, and area comparison tables.
|
|
4
|
+
|
|
5
|
+
## Key Patterns Used
|
|
6
|
+
|
|
7
|
+
- **Architectural floor plan**: Top-down view with walls, doors, windows
|
|
8
|
+
- **Proposed modifications**: Dotted red lines for new walls
|
|
9
|
+
- **Room color coding**: Light fills to distinguish room types
|
|
10
|
+
- **Circulation paths**: Arrows showing new access routes
|
|
11
|
+
- **Data table**: Before/after area comparison with highlighting
|
|
12
|
+
- **Architectural symbols**: North arrow, scale bar, door swings
|
|
13
|
+
|
|
14
|
+
## Diagram Type
|
|
15
|
+
|
|
16
|
+
This is an **architectural floor plan** with:
|
|
17
|
+
- **Plan view**: Top-down orthographic projection
|
|
18
|
+
- **Overlay technique**: Existing structure + proposed changes
|
|
19
|
+
- **Quantitative data**: Area measurements and comparison table
|
|
20
|
+
|
|
21
|
+
## Architectural Drawing Elements
|
|
22
|
+
|
|
23
|
+
### Wall Styles
|
|
24
|
+
|
|
25
|
+
```xml
|
|
26
|
+
<!-- Outer walls (thick) -->
|
|
27
|
+
<line class="wall" x1="0" y1="0" x2="560" y2="0"/>
|
|
28
|
+
|
|
29
|
+
<!-- Internal walls (thinner) -->
|
|
30
|
+
<line class="wall-thin" x1="180" y1="0" x2="180" y2="140"/>
|
|
31
|
+
|
|
32
|
+
<!-- Proposed new walls (dotted red) -->
|
|
33
|
+
<line class="proposed-wall" x1="125" y1="170" x2="125" y2="330"/>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```css
|
|
37
|
+
.wall { stroke: var(--text-primary); stroke-width: 6; fill: none; stroke-linecap: square; }
|
|
38
|
+
.wall-thin { stroke: var(--text-primary); stroke-width: 3; fill: none; }
|
|
39
|
+
.proposed-wall { stroke: #A32D2D; stroke-width: 4; fill: none; stroke-dasharray: 8 4; }
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Door Symbols
|
|
43
|
+
|
|
44
|
+
```xml
|
|
45
|
+
<!-- Door opening with swing arc -->
|
|
46
|
+
<rect x="150" y="137" width="25" height="6" fill="var(--bg-primary)"/>
|
|
47
|
+
<path class="door" d="M150,140 L150,165"/>
|
|
48
|
+
<path class="door-swing" d="M150,140 A25,25 0 0,0 175,140"/>
|
|
49
|
+
|
|
50
|
+
<!-- Sliding door (balcony) -->
|
|
51
|
+
<rect x="60" y="327" width="60" height="6" fill="var(--bg-primary)" stroke="var(--text-secondary)" stroke-width="1"/>
|
|
52
|
+
<line x1="60" y1="330" x2="90" y2="330" stroke="var(--text-secondary)" stroke-width="2"/>
|
|
53
|
+
<line x1="90" y1="330" x2="120" y2="330" stroke="var(--text-secondary)" stroke-width="2" stroke-dasharray="3 3"/>
|
|
54
|
+
|
|
55
|
+
<!-- Proposed door (dotted) -->
|
|
56
|
+
<rect x="143" y="292" width="22" height="6" fill="var(--bg-primary)" stroke="#A32D2D" stroke-width="1" stroke-dasharray="3 2"/>
|
|
57
|
+
<path d="M165,295 A22,22 0 0,0 165,273" stroke="#A32D2D" stroke-width="1" stroke-dasharray="3 2" fill="none"/>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```css
|
|
61
|
+
.door { stroke: var(--text-secondary); stroke-width: 1.5; fill: none; }
|
|
62
|
+
.door-swing { stroke: var(--text-tertiary); stroke-width: 1; fill: none; stroke-dasharray: 3 2; }
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Window Symbols
|
|
66
|
+
|
|
67
|
+
```xml
|
|
68
|
+
<!-- Window with glass indication -->
|
|
69
|
+
<rect class="window" x="-3" y="30" width="6" height="50"/>
|
|
70
|
+
<line class="window-glass" x1="0" y1="35" x2="0" y2="75"/>
|
|
71
|
+
|
|
72
|
+
<!-- Horizontal window (top wall) -->
|
|
73
|
+
<rect class="window" x="220" y="-3" width="60" height="6"/>
|
|
74
|
+
<line class="window-glass" x1="225" y1="0" x2="275" y2="0"/>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
```css
|
|
78
|
+
.window { stroke: var(--text-primary); stroke-width: 1; fill: var(--bg-primary); }
|
|
79
|
+
.window-glass { stroke: #378ADD; stroke-width: 2; fill: none; }
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Room Fills
|
|
83
|
+
|
|
84
|
+
```xml
|
|
85
|
+
<!-- Different colors for room types -->
|
|
86
|
+
<rect class="room-master" x="3" y="3" width="174" height="134" rx="2"/>
|
|
87
|
+
<rect class="room-bed2" x="183" y="3" width="134" height="104" rx="2"/>
|
|
88
|
+
<rect class="room-living" x="3" y="173" width="554" height="154" rx="2"/>
|
|
89
|
+
<rect class="room-kitchen" x="443" y="3" width="114" height="104" rx="2"/>
|
|
90
|
+
<rect class="room-bath" x="183" y="113" width="54" height="54" rx="2"/>
|
|
91
|
+
|
|
92
|
+
<!-- Proposed new room (highlighted) -->
|
|
93
|
+
<rect class="room-new" x="3" y="223" width="120" height="104"/>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
```css
|
|
97
|
+
.room-master { fill: rgba(206, 203, 246, 0.3); } /* purple tint */
|
|
98
|
+
.room-bed2 { fill: rgba(159, 225, 203, 0.3); } /* teal tint */
|
|
99
|
+
.room-bed3 { fill: rgba(250, 199, 117, 0.3); } /* amber tint */
|
|
100
|
+
.room-living { fill: rgba(245, 196, 179, 0.3); } /* coral tint */
|
|
101
|
+
.room-kitchen { fill: rgba(237, 147, 177, 0.3); } /* pink tint */
|
|
102
|
+
.room-bath { fill: rgba(133, 183, 235, 0.3); } /* blue tint */
|
|
103
|
+
.room-new { fill: rgba(163, 45, 45, 0.15); } /* red tint for proposed */
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Support Fixtures
|
|
107
|
+
|
|
108
|
+
```xml
|
|
109
|
+
<!-- Kitchen counter hint -->
|
|
110
|
+
<rect x="450" y="15" width="50" height="25" fill="none" stroke="var(--text-tertiary)" stroke-width="0.5" rx="2"/>
|
|
111
|
+
<text class="tx" x="475" y="30" text-anchor="middle">Counter</text>
|
|
112
|
+
|
|
113
|
+
<!-- Balcony (dashed outline) -->
|
|
114
|
+
<rect class="balcony-fill" x="3" y="333" width="200" height="50"/>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
```css
|
|
118
|
+
.balcony { fill: none; stroke: var(--text-secondary); stroke-width: 2; stroke-dasharray: 6 3; }
|
|
119
|
+
.balcony-fill { fill: rgba(93, 202, 165, 0.1); }
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Room Labels
|
|
123
|
+
|
|
124
|
+
```xml
|
|
125
|
+
<!-- Room name and area -->
|
|
126
|
+
<text class="room-label" x="90" y="65" text-anchor="middle">MASTER</text>
|
|
127
|
+
<text class="room-label" x="90" y="78" text-anchor="middle">BEDROOM</text>
|
|
128
|
+
<text class="area-label" x="90" y="95" text-anchor="middle">195 sq ft</text>
|
|
129
|
+
|
|
130
|
+
<!-- Proposed room (in red) -->
|
|
131
|
+
<text class="room-label" x="63" y="268" text-anchor="middle" fill="#A32D2D">BEDROOM 4</text>
|
|
132
|
+
<text class="tx" x="63" y="282" text-anchor="middle" fill="#A32D2D">(NEW)</text>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
```css
|
|
136
|
+
.room-label { font-family: system-ui; font-size: 11px; fill: var(--text-primary); font-weight: 500; }
|
|
137
|
+
.area-label { font-family: system-ui; font-size: 9px; fill: var(--text-tertiary); }
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Circulation Arrow
|
|
141
|
+
|
|
142
|
+
```xml
|
|
143
|
+
<defs>
|
|
144
|
+
<marker id="circ-arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto">
|
|
145
|
+
<path d="M0,0 L10,5 L0,10 Z" class="circulation-fill"/>
|
|
146
|
+
</marker>
|
|
147
|
+
</defs>
|
|
148
|
+
|
|
149
|
+
<path class="circulation" d="M300,250 L200,250 L145,250 L145,280" marker-end="url(#circ-arrow)"/>
|
|
150
|
+
<text class="tx" x="250" y="242" fill="#3B6D11" font-weight="500">New corridor access</text>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
```css
|
|
154
|
+
.circulation { stroke: #3B6D11; stroke-width: 2; fill: none; }
|
|
155
|
+
.circulation-fill { fill: #3B6D11; }
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### North Arrow and Scale Bar
|
|
159
|
+
|
|
160
|
+
```xml
|
|
161
|
+
<!-- North arrow -->
|
|
162
|
+
<g transform="translate(520, 260)">
|
|
163
|
+
<circle cx="0" cy="0" r="20" fill="none" stroke="var(--text-tertiary)" stroke-width="0.5"/>
|
|
164
|
+
<polygon points="0,-18 -5,5 0,0 5,5" fill="var(--text-primary)"/>
|
|
165
|
+
<text class="tx" x="0" y="-22" text-anchor="middle">N</text>
|
|
166
|
+
</g>
|
|
167
|
+
|
|
168
|
+
<!-- Scale bar -->
|
|
169
|
+
<g transform="translate(420, 300)">
|
|
170
|
+
<line x1="0" y1="0" x2="100" y2="0" stroke="var(--text-primary)" stroke-width="2"/>
|
|
171
|
+
<line x1="0" y1="-5" x2="0" y2="5" stroke="var(--text-primary)" stroke-width="1"/>
|
|
172
|
+
<line x1="50" y1="-3" x2="50" y2="3" stroke="var(--text-primary)" stroke-width="1"/>
|
|
173
|
+
<line x1="100" y1="-5" x2="100" y2="5" stroke="var(--text-primary)" stroke-width="1"/>
|
|
174
|
+
<text class="tx" x="0" y="15" text-anchor="middle">0</text>
|
|
175
|
+
<text class="tx" x="50" y="15" text-anchor="middle">5'</text>
|
|
176
|
+
<text class="tx" x="100" y="15" text-anchor="middle">10'</text>
|
|
177
|
+
</g>
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Area Comparison Table
|
|
181
|
+
|
|
182
|
+
### Table Structure
|
|
183
|
+
|
|
184
|
+
```xml
|
|
185
|
+
<!-- Header row -->
|
|
186
|
+
<rect class="table-header" x="0" y="0" width="180" height="28" rx="4 4 0 0"/>
|
|
187
|
+
<text class="ts" x="90" y="18" text-anchor="middle" font-weight="500">Room</text>
|
|
188
|
+
|
|
189
|
+
<!-- Normal row -->
|
|
190
|
+
<rect class="table-row" x="0" y="28" width="180" height="24"/>
|
|
191
|
+
<text class="tx" x="10" y="44">Master Bedroom</text>
|
|
192
|
+
<text class="tx" x="230" y="44" text-anchor="middle">195</text>
|
|
193
|
+
|
|
194
|
+
<!-- Alternating row -->
|
|
195
|
+
<rect class="table-row-alt" x="0" y="52" width="180" height="24"/>
|
|
196
|
+
|
|
197
|
+
<!-- Highlighted row (for changes) -->
|
|
198
|
+
<rect class="table-highlight" x="0" y="100" width="180" height="24"/>
|
|
199
|
+
<text class="tx" x="10" y="116" fill="#A32D2D" font-weight="500">Bedroom 4 (NEW)</text>
|
|
200
|
+
<text class="tx" x="430" y="116" text-anchor="middle" fill="#3B6D11">+100</text>
|
|
201
|
+
|
|
202
|
+
<!-- Total row -->
|
|
203
|
+
<rect x="0" y="268" width="180" height="28" fill="var(--bg-secondary)" stroke="var(--border)" stroke-width="1"/>
|
|
204
|
+
<text class="ts" x="10" y="286" font-weight="500">TOTAL CARPET AREA</text>
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
```css
|
|
208
|
+
.table-header { fill: var(--bg-secondary); }
|
|
209
|
+
.table-row { fill: var(--bg-primary); stroke: var(--border); stroke-width: 0.5; }
|
|
210
|
+
.table-row-alt { fill: var(--bg-tertiary); stroke: var(--border); stroke-width: 0.5; }
|
|
211
|
+
.table-highlight { fill: rgba(163, 45, 45, 0.1); stroke: #A32D2D; stroke-width: 0.5; }
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Layout Notes
|
|
215
|
+
|
|
216
|
+
- **ViewBox**: 800×780 (portrait for floor plan + table)
|
|
217
|
+
- **Scale**: 10px = 1 foot (apartment ~50ft × 33ft)
|
|
218
|
+
- **Floor plan origin**: Offset at (50, 60) for margins
|
|
219
|
+
- **Wall thickness**: 6px outer, 3px inner (represents ~6" walls)
|
|
220
|
+
- **Room labels**: Centered in each room with area below
|
|
221
|
+
- **Table placement**: Below floor plan with full width
|
|
222
|
+
|
|
223
|
+
## Color Coding
|
|
224
|
+
|
|
225
|
+
| Element | Color | Usage |
|
|
226
|
+
|---------|-------|-------|
|
|
227
|
+
| Proposed walls | Red (#A32D2D) dotted | New construction |
|
|
228
|
+
| New room fill | Red 15% opacity | Bedroom 4 area |
|
|
229
|
+
| Circulation | Green (#3B6D11) | New access path |
|
|
230
|
+
| Window glass | Blue (#378ADD) | Glass indication |
|
|
231
|
+
| Bedrooms | Purple/Teal/Amber tints | Room differentiation |
|
|
232
|
+
| Wet areas | Blue tint | Bathrooms |
|
|
233
|
+
| Living | Coral tint | Common areas |
|
|
234
|
+
|
|
235
|
+
## When to Use This Pattern
|
|
236
|
+
|
|
237
|
+
Use this diagram style for:
|
|
238
|
+
- Apartment/house floor plans
|
|
239
|
+
- Office layout planning
|
|
240
|
+
- Renovation proposals showing before/after
|
|
241
|
+
- Space planning with area calculations
|
|
242
|
+
- Real estate marketing materials
|
|
243
|
+
- Interior design presentations
|
|
244
|
+
- Building permit documentation
|