create-yss-spec 1.1.4 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -2
- package/package.json +13 -2
- package/src/cli.js +367 -51
- package/template/.agents/skills/ask-matt/SKILL.md +8 -4
- package/template/.agents/skills/ask-matt/agents/openai.yaml +5 -0
- package/template/.agents/skills/code-review/SKILL.md +4 -4
- package/template/.agents/skills/code-review/agents/openai.yaml +3 -0
- package/template/.agents/skills/codebase-design/agents/openai.yaml +3 -0
- package/template/.agents/skills/competitive-intelligence/SKILL.md +5 -5
- package/template/.agents/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/template/.agents/skills/domain-modeling/agents/openai.yaml +3 -0
- package/template/.agents/skills/excalidraw-diagram-generator/SKILL.md +3 -3
- package/template/.agents/skills/grill-me/agents/openai.yaml +5 -0
- package/template/.agents/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/template/.agents/skills/grilling/SKILL.md +4 -4
- package/template/.agents/skills/grilling/agents/openai.yaml +3 -0
- package/template/.agents/skills/handoff/SKILL.md +1 -1
- package/template/.agents/skills/handoff/agents/openai.yaml +5 -0
- package/template/.agents/skills/high-fidelity-html-prototype/SKILL.md +6 -6
- package/template/.agents/skills/high-fidelity-html-prototype/agents/openai.yaml +5 -0
- package/template/.agents/skills/implement/SKILL.md +2 -2
- package/template/.agents/skills/implement/agents/openai.yaml +5 -0
- package/template/.agents/skills/improve-codebase-architecture/SKILL.md +6 -1
- package/template/.agents/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/template/.agents/skills/lombok/SKILL.md +345 -0
- package/template/.agents/skills/mapstruct/SKILL.md +328 -0
- package/template/.agents/skills/prototype/LOGIC.md +3 -3
- package/template/.agents/skills/prototype/SKILL.md +2 -6
- package/template/.agents/skills/prototype/UI.md +4 -4
- package/template/.agents/skills/prototype/agents/openai.yaml +3 -0
- package/template/.agents/skills/research/agents/openai.yaml +3 -0
- package/template/.agents/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/template/.agents/skills/setup-matt-pocock-skills/SKILL.md +21 -32
- package/template/.agents/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
- package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
- package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
- package/template/.agents/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
- package/template/.agents/skills/tdd/agents/openai.yaml +3 -0
- package/template/.agents/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/template/.agents/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/template/.agents/skills/teach/MISSION-FORMAT.md +31 -0
- package/template/.agents/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/template/.agents/skills/teach/SKILL.md +140 -0
- package/template/.agents/skills/teach/agents/openai.yaml +5 -0
- package/template/.agents/skills/to-spec/SKILL.md +58 -0
- package/template/.agents/skills/to-spec/agents/openai.yaml +5 -0
- package/template/.agents/skills/to-tickets/SKILL.md +62 -0
- package/template/.agents/skills/to-tickets/agents/openai.yaml +5 -0
- package/template/.agents/skills/triage/SKILL.md +4 -4
- package/template/.agents/skills/triage/agents/openai.yaml +5 -0
- package/template/.agents/skills/wayfinder/SKILL.md +128 -0
- package/template/.agents/skills/wayfinder/agents/openai.yaml +5 -0
- package/template/.agents/skills/web-design-engineer/SKILL.md +2 -2
- package/template/.agents/skills/writing-great-skills/GLOSSARY.md +201 -0
- package/template/.agents/skills/writing-great-skills/SKILL.md +83 -0
- package/template/.agents/skills/writing-great-skills/agents/openai.yaml +5 -0
- package/template/.agents/skills/yss-cache/SKILL.md +44 -0
- package/template/.agents/skills/yss-cache/agents/openai.yaml +5 -0
- package/template/.agents/skills/yss-cache/references/annotations.md +39 -0
- package/template/.agents/skills/yss-cache/references/architecture.md +25 -0
- package/template/.agents/skills/yss-cache/references/configuration.md +34 -0
- package/template/.agents/skills/yss-cache/references/redis-fallback.md +23 -0
- package/template/.agents/skills/yss-cache/references/redis-topology.md +62 -0
- package/template/.agents/skills/yss-cache/references/serialization.md +17 -0
- package/template/.agents/skills/yss-cache/references/source-index.md +64 -0
- package/template/.agents/skills/yss-cache/references/troubleshooting.md +33 -0
- package/template/.agents/skills/yss-cache/references/verification.md +34 -0
- package/template/.agents/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
- package/template/.agents/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
- package/template/.agents/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
- package/template/.claude/skills/ask-matt/SKILL.md +8 -4
- package/template/.claude/skills/ask-matt/agents/openai.yaml +5 -0
- package/template/.claude/skills/code-review/SKILL.md +4 -4
- package/template/.claude/skills/code-review/agents/openai.yaml +3 -0
- package/template/.claude/skills/codebase-design/agents/openai.yaml +3 -0
- package/template/.claude/skills/competitive-intelligence/SKILL.md +5 -5
- package/template/.claude/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/template/.claude/skills/domain-modeling/agents/openai.yaml +3 -0
- package/template/.claude/skills/excalidraw-diagram-generator/SKILL.md +37 -16
- package/template/.claude/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
- package/template/.claude/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
- package/template/.claude/skills/grill-me/agents/openai.yaml +5 -0
- package/template/.claude/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/template/.claude/skills/grilling/SKILL.md +4 -4
- package/template/.claude/skills/grilling/agents/openai.yaml +3 -0
- package/template/.claude/skills/handoff/SKILL.md +1 -1
- package/template/.claude/skills/handoff/agents/openai.yaml +5 -0
- package/template/.claude/skills/implement/SKILL.md +2 -2
- package/template/.claude/skills/implement/agents/openai.yaml +5 -0
- package/template/.claude/skills/improve-codebase-architecture/SKILL.md +6 -1
- package/template/.claude/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/template/.claude/skills/prototype/LOGIC.md +3 -3
- package/template/.claude/skills/prototype/SKILL.md +2 -6
- package/template/.claude/skills/prototype/UI.md +4 -4
- package/template/.claude/skills/prototype/agents/openai.yaml +3 -0
- package/template/.claude/skills/research/agents/openai.yaml +3 -0
- package/template/.claude/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/template/.claude/skills/setup-matt-pocock-skills/SKILL.md +21 -32
- package/template/.claude/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/template/.claude/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
- package/template/.claude/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
- package/template/.claude/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
- package/template/.claude/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
- package/template/.claude/skills/tdd/agents/openai.yaml +3 -0
- package/template/.claude/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/template/.claude/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/template/.claude/skills/teach/MISSION-FORMAT.md +31 -0
- package/template/.claude/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/template/.claude/skills/teach/SKILL.md +140 -0
- package/template/.claude/skills/teach/agents/openai.yaml +5 -0
- package/template/.claude/skills/to-spec/SKILL.md +58 -0
- package/template/.claude/skills/to-spec/agents/openai.yaml +5 -0
- package/template/.claude/skills/to-tickets/SKILL.md +62 -0
- package/template/.claude/skills/to-tickets/agents/openai.yaml +5 -0
- package/template/.claude/skills/triage/SKILL.md +4 -4
- package/template/.claude/skills/triage/agents/openai.yaml +5 -0
- package/template/.claude/skills/wayfinder/SKILL.md +128 -0
- package/template/.claude/skills/wayfinder/agents/openai.yaml +5 -0
- package/template/.claude/skills/web-design-engineer/SKILL.md +2 -2
- package/template/.claude/skills/writing-great-skills/GLOSSARY.md +201 -0
- package/template/.claude/skills/writing-great-skills/SKILL.md +83 -0
- package/template/.claude/skills/writing-great-skills/agents/openai.yaml +5 -0
- package/template/.claude/skills/yss-cache/SKILL.md +44 -0
- package/template/.claude/skills/yss-cache/agents/openai.yaml +5 -0
- package/template/.claude/skills/yss-cache/references/annotations.md +39 -0
- package/template/.claude/skills/yss-cache/references/architecture.md +25 -0
- package/template/.claude/skills/yss-cache/references/configuration.md +34 -0
- package/template/.claude/skills/yss-cache/references/redis-fallback.md +23 -0
- package/template/.claude/skills/yss-cache/references/redis-topology.md +62 -0
- package/template/.claude/skills/yss-cache/references/serialization.md +17 -0
- package/template/.claude/skills/yss-cache/references/source-index.md +64 -0
- package/template/.claude/skills/yss-cache/references/troubleshooting.md +33 -0
- package/template/.claude/skills/yss-cache/references/verification.md +34 -0
- package/template/.claude/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
- package/template/.claude/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
- package/template/.claude/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
- package/template/.codex/config.toml +3 -0
- package/template/.codex/skills/ask-matt/SKILL.md +8 -4
- package/template/.codex/skills/ask-matt/agents/openai.yaml +5 -0
- package/template/.codex/skills/code-review/SKILL.md +4 -4
- package/template/.codex/skills/code-review/agents/openai.yaml +3 -0
- package/template/.codex/skills/code-review-process/references/automation-and-standards.md +1 -1
- package/template/.codex/skills/codebase-design/agents/openai.yaml +3 -0
- package/template/.codex/skills/competitive-intelligence/SKILL.md +5 -5
- package/template/.codex/skills/cross-repo-implementation-routing/SKILL.md +1 -1
- package/template/.codex/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/template/.codex/skills/domain-modeling/agents/openai.yaml +3 -0
- package/template/.codex/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/template/.codex/skills/handoff/SKILL.md +16 -0
- package/template/.codex/skills/handoff/agents/openai.yaml +5 -0
- package/template/.codex/skills/high-fidelity-html-prototype/SKILL.md +6 -6
- package/template/.codex/skills/implement/SKILL.md +2 -2
- package/template/.codex/skills/implement/agents/openai.yaml +5 -0
- package/template/.codex/skills/improve-codebase-architecture/SKILL.md +6 -1
- package/template/.codex/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/template/.codex/skills/product-design-prototype/SKILL.md +14 -10
- package/template/.codex/skills/product-design-prototype/agents/openai.yaml +1 -1
- package/template/.codex/skills/prototype/LOGIC.md +3 -3
- package/template/.codex/skills/prototype/SKILL.md +2 -6
- package/template/.codex/skills/prototype/UI.md +4 -4
- package/template/.codex/skills/prototype/agents/openai.yaml +3 -0
- package/template/.codex/skills/prototype-review/SKILL.md +6 -6
- package/template/.codex/skills/prototype-review/agents/openai.yaml +2 -2
- package/template/.codex/skills/research/agents/openai.yaml +3 -0
- package/template/.codex/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/template/.codex/skills/setup-matt-pocock-skills/SKILL.md +21 -32
- package/template/.codex/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/template/.codex/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
- package/template/.codex/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
- package/template/.codex/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
- package/template/.codex/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
- package/template/.codex/skills/tdd/agents/openai.yaml +3 -0
- package/template/.codex/skills/to-spec/SKILL.md +58 -0
- package/template/.codex/skills/to-spec/agents/openai.yaml +5 -0
- package/template/.codex/skills/to-tickets/SKILL.md +62 -0
- package/template/.codex/skills/to-tickets/agents/openai.yaml +5 -0
- package/template/.codex/skills/triage/SKILL.md +4 -4
- package/template/.codex/skills/triage/agents/openai.yaml +5 -0
- package/template/.codex/skills/wayfinder/SKILL.md +128 -0
- package/template/.codex/skills/wayfinder/agents/openai.yaml +5 -0
- package/template/.codex/skills/writing-great-skills/GLOSSARY.md +201 -0
- package/template/.codex/skills/writing-great-skills/SKILL.md +83 -0
- package/template/.codex/skills/writing-great-skills/agents/openai.yaml +5 -0
- package/template/.codex/skills/yss-cache/SKILL.md +29 -58
- package/template/.codex/skills/yss-cache/agents/openai.yaml +2 -2
- package/template/.codex/skills/yss-cache/references/annotations.md +39 -0
- package/template/.codex/skills/yss-cache/references/architecture.md +25 -0
- package/template/.codex/skills/yss-cache/references/configuration.md +34 -0
- package/template/.codex/skills/yss-cache/references/redis-fallback.md +23 -0
- package/template/.codex/skills/yss-cache/references/redis-topology.md +62 -0
- package/template/.codex/skills/yss-cache/references/serialization.md +17 -0
- package/template/.codex/skills/yss-cache/references/source-index.md +1 -1
- package/template/.codex/skills/yss-cache/references/troubleshooting.md +33 -0
- package/template/.codex/skills/yss-cache/references/verification.md +34 -0
- package/template/.codex/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
- package/template/.codex/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
- package/template/.codex/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +1 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +1 -1
- package/template/.codex/skills/yss-design-system/SKILL.md +9 -2
- package/template/.codex/skills/yss-design-system/references/design-system.md +12 -0
- package/template/.codex/skills/yss-domain-modeling/SKILL.md +3 -3
- package/template/.codex/skills/yss-domain-modeling/agents/openai.yaml +1 -1
- package/template/.codex/skills/yss-domain-modeling/references/modeling-workflow.md +2 -2
- package/template/.codex/skills/yss-openapi/SKILL.md +35 -47
- package/template/.codex/skills/yss-openapi/img.png +0 -0
- package/template/.codex/skills/yss-openapi/img_1.png +0 -0
- package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +2 -2
- package/template/.codex/skills/yss-openapi-governance/SKILL.md +2 -2
- package/template/.codex/skills/yss-product-lifecycle/SKILL.md +46 -39
- package/template/.codex/skills/yss-product-lifecycle/references/artifact-checklist.md +23 -21
- package/template/.codex/skills/yss-product-lifecycle/references/stage-routing.md +15 -15
- package/template/.codex/skills/yss-product-lifecycle/references/yss-skill-routing.md +13 -8
- package/template/.codex/skills/yss-repository/SKILL.md +11 -3
- package/template/.codex/skills/yss-router/SKILL.md +1 -1
- package/template/.codex/skills/yss-web-controller/SKILL.md +9 -3
- package/template/.hermes/skills/ask-matt/SKILL.md +8 -4
- package/template/.hermes/skills/ask-matt/agents/openai.yaml +5 -0
- package/template/.hermes/skills/code-review/SKILL.md +4 -4
- package/template/.hermes/skills/code-review/agents/openai.yaml +3 -0
- package/template/.hermes/skills/codebase-design/agents/openai.yaml +3 -0
- package/template/.hermes/skills/competitive-intelligence/SKILL.md +5 -5
- package/template/.hermes/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/template/.hermes/skills/domain-modeling/agents/openai.yaml +3 -0
- package/template/.hermes/skills/excalidraw-diagram-generator/SKILL.md +37 -16
- package/template/.hermes/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
- package/template/.hermes/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
- package/template/.hermes/skills/grill-me/agents/openai.yaml +5 -0
- package/template/.hermes/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/template/.hermes/skills/grilling/SKILL.md +4 -4
- package/template/.hermes/skills/grilling/agents/openai.yaml +3 -0
- package/template/.hermes/skills/handoff/SKILL.md +1 -1
- package/template/.hermes/skills/handoff/agents/openai.yaml +5 -0
- package/template/.hermes/skills/implement/SKILL.md +2 -2
- package/template/.hermes/skills/implement/agents/openai.yaml +5 -0
- package/template/.hermes/skills/improve-codebase-architecture/SKILL.md +6 -1
- package/template/.hermes/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/template/.hermes/skills/prototype/LOGIC.md +3 -3
- package/template/.hermes/skills/prototype/SKILL.md +2 -6
- package/template/.hermes/skills/prototype/UI.md +4 -4
- package/template/.hermes/skills/prototype/agents/openai.yaml +3 -0
- package/template/.hermes/skills/research/agents/openai.yaml +3 -0
- package/template/.hermes/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/template/.hermes/skills/setup-matt-pocock-skills/SKILL.md +21 -32
- package/template/.hermes/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
- package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
- package/template/.hermes/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
- package/template/.hermes/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
- package/template/.hermes/skills/tdd/agents/openai.yaml +3 -0
- package/template/.hermes/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/template/.hermes/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/template/.hermes/skills/teach/MISSION-FORMAT.md +31 -0
- package/template/.hermes/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/template/.hermes/skills/teach/SKILL.md +140 -0
- package/template/.hermes/skills/teach/agents/openai.yaml +5 -0
- package/template/.hermes/skills/to-spec/SKILL.md +58 -0
- package/template/.hermes/skills/to-spec/agents/openai.yaml +5 -0
- package/template/.hermes/skills/to-tickets/SKILL.md +62 -0
- package/template/.hermes/skills/to-tickets/agents/openai.yaml +5 -0
- package/template/.hermes/skills/triage/SKILL.md +4 -4
- package/template/.hermes/skills/triage/agents/openai.yaml +5 -0
- package/template/.hermes/skills/wayfinder/SKILL.md +128 -0
- package/template/.hermes/skills/wayfinder/agents/openai.yaml +5 -0
- package/template/.hermes/skills/web-design-engineer/SKILL.md +2 -2
- package/template/.hermes/skills/writing-great-skills/GLOSSARY.md +201 -0
- package/template/.hermes/skills/writing-great-skills/SKILL.md +83 -0
- package/template/.hermes/skills/writing-great-skills/agents/openai.yaml +5 -0
- package/template/.hermes/skills/yss-cache/SKILL.md +44 -0
- package/template/.hermes/skills/yss-cache/agents/openai.yaml +5 -0
- package/template/.hermes/skills/yss-cache/references/annotations.md +39 -0
- package/template/.hermes/skills/yss-cache/references/architecture.md +25 -0
- package/template/.hermes/skills/yss-cache/references/configuration.md +34 -0
- package/template/.hermes/skills/yss-cache/references/redis-fallback.md +23 -0
- package/template/.hermes/skills/yss-cache/references/redis-topology.md +62 -0
- package/template/.hermes/skills/yss-cache/references/serialization.md +17 -0
- package/template/.hermes/skills/yss-cache/references/source-index.md +64 -0
- package/template/.hermes/skills/yss-cache/references/troubleshooting.md +33 -0
- package/template/.hermes/skills/yss-cache/references/verification.md +34 -0
- package/template/.hermes/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
- package/template/.hermes/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
- package/template/.hermes/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
- package/template/.obsidian/app.json +3 -0
- package/template/.obsidian/appearance.json +5 -0
- package/template/.obsidian/community-plugins.json +4 -0
- package/template/.obsidian/core-plugins.json +33 -0
- package/template/.obsidian/graph.json +22 -0
- package/template/.obsidian/plugins/obsidian-excalidraw-plugin/data.json +1085 -0
- package/template/.obsidian/plugins/obsidian-excalidraw-plugin/main.js +30 -0
- package/template/.obsidian/plugins/obsidian-excalidraw-plugin/manifest.json +12 -0
- package/template/.obsidian/plugins/obsidian-excalidraw-plugin/styles.css +1 -0
- package/template/.obsidian/plugins/obsidian-git/main.js +415 -0
- package/template/.obsidian/plugins/obsidian-git/manifest.json +10 -0
- package/template/.obsidian/plugins/obsidian-git/styles.css +705 -0
- package/template/.obsidian/workspace.json +222 -0
- package/template/.pi/skills/ask-matt/SKILL.md +8 -4
- package/template/.pi/skills/ask-matt/agents/openai.yaml +5 -0
- package/template/.pi/skills/code-review/SKILL.md +4 -4
- package/template/.pi/skills/code-review/agents/openai.yaml +3 -0
- package/template/.pi/skills/codebase-design/agents/openai.yaml +3 -0
- package/template/.pi/skills/competitive-intelligence/SKILL.md +5 -5
- package/template/.pi/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/template/.pi/skills/domain-modeling/agents/openai.yaml +3 -0
- package/template/.pi/skills/excalidraw-diagram-generator/SKILL.md +37 -16
- package/template/.pi/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
- package/template/.pi/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
- package/template/.pi/skills/grill-me/agents/openai.yaml +5 -0
- package/template/.pi/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/template/.pi/skills/grilling/SKILL.md +4 -4
- package/template/.pi/skills/grilling/agents/openai.yaml +3 -0
- package/template/.pi/skills/handoff/SKILL.md +1 -1
- package/template/.pi/skills/handoff/agents/openai.yaml +5 -0
- package/template/.pi/skills/implement/SKILL.md +2 -2
- package/template/.pi/skills/implement/agents/openai.yaml +5 -0
- package/template/.pi/skills/improve-codebase-architecture/SKILL.md +6 -1
- package/template/.pi/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/template/.pi/skills/prototype/LOGIC.md +3 -3
- package/template/.pi/skills/prototype/SKILL.md +2 -6
- package/template/.pi/skills/prototype/UI.md +4 -4
- package/template/.pi/skills/prototype/agents/openai.yaml +3 -0
- package/template/.pi/skills/research/agents/openai.yaml +3 -0
- package/template/.pi/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/template/.pi/skills/setup-matt-pocock-skills/SKILL.md +21 -32
- package/template/.pi/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/template/.pi/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
- package/template/.pi/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
- package/template/.pi/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
- package/template/.pi/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
- package/template/.pi/skills/tdd/agents/openai.yaml +3 -0
- package/template/.pi/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/template/.pi/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/template/.pi/skills/teach/MISSION-FORMAT.md +31 -0
- package/template/.pi/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/template/.pi/skills/teach/SKILL.md +140 -0
- package/template/.pi/skills/teach/agents/openai.yaml +5 -0
- package/template/.pi/skills/to-spec/SKILL.md +58 -0
- package/template/.pi/skills/to-spec/agents/openai.yaml +5 -0
- package/template/.pi/skills/to-tickets/SKILL.md +62 -0
- package/template/.pi/skills/to-tickets/agents/openai.yaml +5 -0
- package/template/.pi/skills/triage/SKILL.md +4 -4
- package/template/.pi/skills/triage/agents/openai.yaml +5 -0
- package/template/.pi/skills/wayfinder/SKILL.md +128 -0
- package/template/.pi/skills/wayfinder/agents/openai.yaml +5 -0
- package/template/.pi/skills/web-design-engineer/SKILL.md +2 -2
- package/template/.pi/skills/writing-great-skills/GLOSSARY.md +201 -0
- package/template/.pi/skills/writing-great-skills/SKILL.md +83 -0
- package/template/.pi/skills/writing-great-skills/agents/openai.yaml +5 -0
- package/template/.pi/skills/yss-cache/SKILL.md +44 -0
- package/template/.pi/skills/yss-cache/agents/openai.yaml +5 -0
- package/template/.pi/skills/yss-cache/references/annotations.md +39 -0
- package/template/.pi/skills/yss-cache/references/architecture.md +25 -0
- package/template/.pi/skills/yss-cache/references/configuration.md +34 -0
- package/template/.pi/skills/yss-cache/references/redis-fallback.md +23 -0
- package/template/.pi/skills/yss-cache/references/redis-topology.md +62 -0
- package/template/.pi/skills/yss-cache/references/serialization.md +17 -0
- package/template/.pi/skills/yss-cache/references/source-index.md +64 -0
- package/template/.pi/skills/yss-cache/references/troubleshooting.md +33 -0
- package/template/.pi/skills/yss-cache/references/verification.md +34 -0
- package/template/.pi/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
- package/template/.pi/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
- package/template/.pi/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
- package/template/.trae/skills/ask-matt/SKILL.md +8 -4
- package/template/.trae/skills/ask-matt/agents/openai.yaml +5 -0
- package/template/.trae/skills/code-review/SKILL.md +4 -4
- package/template/.trae/skills/code-review/agents/openai.yaml +3 -0
- package/template/.trae/skills/codebase-design/agents/openai.yaml +3 -0
- package/template/.trae/skills/competitive-intelligence/SKILL.md +5 -5
- package/template/.trae/skills/diagnosing-bugs/agents/openai.yaml +3 -0
- package/template/.trae/skills/domain-modeling/agents/openai.yaml +3 -0
- package/template/.trae/skills/excalidraw-diagram-generator/SKILL.md +37 -16
- package/template/.trae/skills/excalidraw-diagram-generator/scripts/add-arrow.py +18 -18
- package/template/.trae/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +46 -47
- package/template/.trae/skills/grill-me/agents/openai.yaml +5 -0
- package/template/.trae/skills/grill-with-docs/agents/openai.yaml +5 -0
- package/template/.trae/skills/grilling/SKILL.md +4 -4
- package/template/.trae/skills/grilling/agents/openai.yaml +3 -0
- package/template/.trae/skills/handoff/SKILL.md +1 -1
- package/template/.trae/skills/handoff/agents/openai.yaml +5 -0
- package/template/.trae/skills/implement/SKILL.md +2 -2
- package/template/.trae/skills/implement/agents/openai.yaml +5 -0
- package/template/.trae/skills/improve-codebase-architecture/SKILL.md +6 -1
- package/template/.trae/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
- package/template/.trae/skills/prototype/LOGIC.md +3 -3
- package/template/.trae/skills/prototype/SKILL.md +2 -6
- package/template/.trae/skills/prototype/UI.md +4 -4
- package/template/.trae/skills/prototype/agents/openai.yaml +3 -0
- package/template/.trae/skills/research/agents/openai.yaml +3 -0
- package/template/.trae/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
- package/template/.trae/skills/setup-matt-pocock-skills/SKILL.md +21 -32
- package/template/.trae/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
- package/template/.trae/skills/setup-matt-pocock-skills/issue-tracker-github.md +2 -2
- package/template/.trae/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +2 -2
- package/template/.trae/skills/setup-matt-pocock-skills/issue-tracker-local.md +6 -6
- package/template/.trae/skills/setup-matt-pocock-skills/triage-labels.md +2 -2
- package/template/.trae/skills/tdd/agents/openai.yaml +3 -0
- package/template/.trae/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/template/.trae/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/template/.trae/skills/teach/MISSION-FORMAT.md +31 -0
- package/template/.trae/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/template/.trae/skills/teach/SKILL.md +140 -0
- package/template/.trae/skills/teach/agents/openai.yaml +5 -0
- package/template/.trae/skills/to-spec/SKILL.md +58 -0
- package/template/.trae/skills/to-spec/agents/openai.yaml +5 -0
- package/template/.trae/skills/to-tickets/SKILL.md +62 -0
- package/template/.trae/skills/to-tickets/agents/openai.yaml +5 -0
- package/template/.trae/skills/triage/SKILL.md +4 -4
- package/template/.trae/skills/triage/agents/openai.yaml +5 -0
- package/template/.trae/skills/wayfinder/SKILL.md +128 -0
- package/template/.trae/skills/wayfinder/agents/openai.yaml +5 -0
- package/template/.trae/skills/web-design-engineer/SKILL.md +2 -2
- package/template/.trae/skills/writing-great-skills/GLOSSARY.md +201 -0
- package/template/.trae/skills/writing-great-skills/SKILL.md +83 -0
- package/template/.trae/skills/writing-great-skills/agents/openai.yaml +5 -0
- package/template/.trae/skills/yss-cache/SKILL.md +44 -0
- package/template/.trae/skills/yss-cache/agents/openai.yaml +5 -0
- package/template/.trae/skills/yss-cache/references/annotations.md +39 -0
- package/template/.trae/skills/yss-cache/references/architecture.md +25 -0
- package/template/.trae/skills/yss-cache/references/configuration.md +34 -0
- package/template/.trae/skills/yss-cache/references/redis-fallback.md +23 -0
- package/template/.trae/skills/yss-cache/references/redis-topology.md +62 -0
- package/template/.trae/skills/yss-cache/references/serialization.md +17 -0
- package/template/.trae/skills/yss-cache/references/source-index.md +64 -0
- package/template/.trae/skills/yss-cache/references/troubleshooting.md +33 -0
- package/template/.trae/skills/yss-cache/references/verification.md +34 -0
- package/template/.trae/skills/yss-cache/scripts/check-skill-freshness.sh +84 -0
- package/template/.trae/skills/yss-cache/scripts/inspect-cache-usage.sh +96 -0
- package/template/.trae/skills/yss-cache/scripts/verify-cache-component.sh +101 -0
- package/template/AGENTS.md +89 -258
- package/template/CONTEXT.md +24 -11
- package/template/README.md +31 -45
- package/template/docs/adr/{adr-product-design-prototype-entrypoint.md → 0001-product-design-prototype-entrypoint.md} +3 -3
- package/template/docs/adr/0002-yss-project-repository-mode.md +3 -0
- package/template/docs/agents/README.md +4 -5
- package/template/docs/agents/domain.md +13 -15
- package/template/docs/agents/gitlab-workflow-skills.md +5 -5
- package/template/docs/agents/issue-tracker.md +15 -14
- package/template/docs/agents/skills-maintenance.md +44 -109
- package/template/docs/agents/triage-labels.md +10 -12
- package/template/docs/api/templates/openapi-draft-review-checklist.md +4 -4
- package/template/docs/api/templates/openapi-freeze-record-template.md +5 -5
- package/template/docs/architecture/README.md +4 -4
- package/template/docs/architecture/templates/architecture-review-checklist.md +4 -4
- package/template/docs/architecture/templates/business-architecture-template.md +7 -7
- package/template/docs/architecture/templates/data-architecture-template.md +4 -4
- package/template/docs/architecture/templates/engineering-baseline-review-template.md +4 -3
- package/template/docs/architecture/templates/functional-architecture-template.md +7 -7
- package/template/docs/architecture/templates/system-overview-design-template.md +5 -6
- package/template/docs/architecture/templates/tech-design-template.md +2 -2
- package/template/docs/design/README.md +8 -8
- package/template/docs/design/design.md +10 -1
- package/template/docs/design/diagrams/README.md +1 -1
- package/template/docs/design/templates/interaction-spec-template.md +6 -6
- package/template/docs/design/templates/product-overview-design-template.md +8 -8
- package/template/docs/design/templates/prototype-confirmation-template.md +4 -4
- package/template/docs/design/templates/prototype-review-checklist.md +5 -5
- package/template/docs/design/templates/state-matrix-template.md +1 -1
- package/template/docs/discovery/IDEATION.md +2 -2
- package/template/docs/discovery/README.md +4 -4
- package/template/docs/discovery/templates/competitive-analysis-template.md +4 -4
- package/template/docs/discovery/templates/discovery-template.md +8 -8
- package/template/docs/implementation/create-yss-spec-repository-mode-contract.md +59 -0
- package/template/docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md +35 -35
- package/template/docs/process/harness-automation-candidates.md +10 -13
- package/template/docs/process/harness-executive-blueprint.md +11 -11
- package/template/docs/process/harness-optimization-backlog.md +6 -6
- package/template/docs/process/harness-pilot-retro-metrics.md +8 -8
- package/template/docs/process/harness-pilot-selection.md +8 -8
- package/template/docs/process/harness-process-tailoring.md +31 -19
- package/template/docs/process/harness-work-unit-map.md +9 -9
- package/template/docs/process/implementation-repo-integration.md +25 -11
- package/template/docs/process/lifecycle-artifact-map.md +60 -42
- package/template/docs/process/product-prototype-workflow.md +10 -10
- package/template/docs/process/skill-governance.md +12 -4
- package/template/docs/process/subagent-collaboration-validation.md +53 -0
- package/template/docs/process/subagent-collaboration.md +111 -0
- package/template/docs/process/template-governance-grilling-record.md +38 -0
- package/template/docs/process/template-governance-skill-validation.md +44 -0
- package/template/docs/process/templates/stage-checkpoint-template.md +42 -7
- package/template/docs/releases/next-major-template-governance.md +32 -0
- package/template/docs/requirements/README.md +11 -11
- package/template/docs/{adr/template.md → templates/adr-template.md} +2 -2
- package/template/docs/templates/agent-brief-template.md +5 -5
- package/template/docs/templates/build-architecture-checklist-template.md +41 -11
- package/template/docs/templates/implementation-repo-registry-template.md +8 -3
- package/template/docs/templates/implementation-routing-template.md +85 -19
- package/template/docs/templates/requirement-freeze-template.md +8 -8
- package/template/docs/templates/review-report-template.md +50 -0
- package/template/docs/templates/spec-delta-template.md +5 -5
- package/template/docs/templates/{prd-template.md → spec-template.md} +19 -9
- package/template/docs/templates/subagent-task-package-template.md +93 -0
- package/template/docs/templates/verification-record-template.md +2 -2
- package/template/docs/templates/vertical-slice-ticket-template.md +88 -0
- package/template/docs/user-guide/README.md +2 -2
- package/template/docs/user-guide/create-yss-spec-cli-guide.md +27 -209
- package/template/docs/user-guide/excalidraw-diagram-generator-guide.md +8 -8
- package/template/docs/user-guide/grill-with-docs-best-practices.md +16 -16
- package/template/docs/user-guide/grill-with-docs-guide.md +19 -19
- package/template/docs/user-guide/lifecycle-best-practices.md +40 -40
- package/template/docs/user-guide/product-lifecycle-workflow.md +31 -31
- package/template/docs/user-guide/product-rd-lifecycle-best-practices.md +121 -121
- package/template/docs/user-guide/spec-ticket-migration-guide.md +35 -0
- package/template/scripts/sync-skills +126 -0
- package/template/scripts/update-skill-lock +202 -0
- package/template/scripts/verify-lifecycle-scenarios +136 -0
- package/template/scripts/verify-template +148 -141
- package/template/skills-lock.json +1068 -108
- package/template/yss-project.yaml +2 -0
- package/template.manifest.json +3 -16
- package/template/.agent/skills/ask-matt/SKILL.md +0 -74
- package/template/.agent/skills/code-review/SKILL.md +0 -89
- package/template/.agent/skills/codebase-design/DEEPENING.md +0 -37
- package/template/.agent/skills/codebase-design/DESIGN-IT-TWICE.md +0 -44
- package/template/.agent/skills/codebase-design/SKILL.md +0 -114
- package/template/.agent/skills/competitive-intelligence/SKILL.md +0 -94
- package/template/.agent/skills/diagnosing-bugs/SKILL.md +0 -134
- package/template/.agent/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +0 -41
- package/template/.agent/skills/domain-modeling/ADR-FORMAT.md +0 -47
- package/template/.agent/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
- package/template/.agent/skills/domain-modeling/SKILL.md +0 -74
- package/template/.agent/skills/grill-with-docs/SKILL.md +0 -7
- package/template/.agent/skills/implement/SKILL.md +0 -15
- package/template/.agent/skills/improve-codebase-architecture/HTML-REPORT.md +0 -123
- package/template/.agent/skills/improve-codebase-architecture/SKILL.md +0 -66
- package/template/.agent/skills/prototype/LOGIC.md +0 -79
- package/template/.agent/skills/prototype/SKILL.md +0 -30
- package/template/.agent/skills/prototype/UI.md +0 -112
- package/template/.agent/skills/research/SKILL.md +0 -12
- package/template/.agent/skills/resolving-merge-conflicts/SKILL.md +0 -14
- package/template/.agent/skills/setup-matt-pocock-skills/SKILL.md +0 -127
- package/template/.agent/skills/setup-matt-pocock-skills/domain.md +0 -51
- package/template/.agent/skills/setup-matt-pocock-skills/issue-tracker-github.md +0 -45
- package/template/.agent/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +0 -46
- package/template/.agent/skills/setup-matt-pocock-skills/issue-tracker-local.md +0 -30
- package/template/.agent/skills/setup-matt-pocock-skills/triage-labels.md +0 -15
- package/template/.agent/skills/tdd/SKILL.md +0 -36
- package/template/.agent/skills/tdd/mocking.md +0 -59
- package/template/.agent/skills/tdd/tests.md +0 -77
- package/template/.agent/skills/to-issues/SKILL.md +0 -84
- package/template/.agent/skills/to-prd/SKILL.md +0 -75
- package/template/.agent/skills/triage/AGENT-BRIEF.md +0 -207
- package/template/.agent/skills/triage/OUT-OF-SCOPE.md +0 -105
- package/template/.agent/skills/triage/SKILL.md +0 -112
- package/template/.agents/skills/to-issues/SKILL.md +0 -84
- package/template/.agents/skills/to-prd/SKILL.md +0 -75
- package/template/.claude/skills/to-issues/SKILL.md +0 -84
- package/template/.claude/skills/to-prd/SKILL.md +0 -75
- package/template/.codex/skills/to-issues/SKILL.md +0 -84
- package/template/.codex/skills/to-prd/SKILL.md +0 -75
- package/template/.codex/skills/yss-cache/assets/ClearCache.java +0 -34
- package/template/.codex/skills/yss-cache/assets/QueryCache.java +0 -36
- package/template/.codex/skills/yss-cache/assets/UpdateCache.java +0 -34
- package/template/.codex/skills/yss-cache/references/README.md +0 -5
- package/template/.hermes/skills/to-issues/SKILL.md +0 -84
- package/template/.hermes/skills/to-prd/SKILL.md +0 -75
- package/template/.pi/skills/to-issues/SKILL.md +0 -84
- package/template/.pi/skills/to-prd/SKILL.md +0 -75
- package/template/.trae/skills/to-issues/SKILL.md +0 -84
- package/template/.trae/skills/to-prd/SKILL.md +0 -75
- package/template/docs/templates/vertical-slice-issue-template.md +0 -61
- /package/template/docs/requirements/{issues → tickets}/.gitkeep +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: excalidraw-diagram-generator
|
|
3
|
-
description: 'Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps,
|
|
3
|
+
description: 'Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "draw business/functional/system/data architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, business flows, system architecture, ER, class, sequence, lineage, and data flow diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Excalidraw Diagram Generator
|
|
@@ -31,6 +31,27 @@ Use this skill when users request:
|
|
|
31
31
|
- 🔄 **Sequence Diagrams**: Object interactions over time, message flows
|
|
32
32
|
- 🗃️ **ER Diagrams**: Database entity relationships, data models
|
|
33
33
|
|
|
34
|
+
## YSS Lifecycle Integration
|
|
35
|
+
|
|
36
|
+
In YSS projects, this skill is a visualization and review aid. It can clarify lifecycle artifacts, but it must not replace Discovery, Spec, OpenAPI, ADR, Spec Delta design, or tests.
|
|
37
|
+
|
|
38
|
+
Use it after the relevant source artifact exists:
|
|
39
|
+
|
|
40
|
+
| Lifecycle artifact | Typical timing | Useful diagrams | Recommended output |
|
|
41
|
+
|--------------------|----------------|-----------------|--------------------|
|
|
42
|
+
| Business architecture | Opportunity exploration / Discovery | user journey, value stream, swimlane, capability map, ecosystem map | `docs/discovery/diagrams/` or `docs/architecture/diagrams/` |
|
|
43
|
+
| Functional architecture | Spec baseline / product design / Spec calibration | feature map, module map, dependency graph, page map | `docs/design/diagrams/` or `docs/architecture/diagrams/` |
|
|
44
|
+
| System architecture | Engineering baseline / Architecture / Spec Delta design | C4/container view, deployment, sequence, DDD boundary, DFD | `docs/architecture/diagrams/` |
|
|
45
|
+
| Data architecture | Detailed design before persistence / repository work | ER, class, meta-model, lineage graph, query/data-flow diagram | `docs/architecture/diagrams/` |
|
|
46
|
+
|
|
47
|
+
Guardrails:
|
|
48
|
+
|
|
49
|
+
- Do not invent product requirements or architecture decisions only from the diagram prompt.
|
|
50
|
+
- Reference the source artifact in the Markdown document that links the `.excalidraw` file.
|
|
51
|
+
- If a diagram exposes a missing field, unclear state, dependency, or boundary problem, write that finding back to the source Spec, OpenAPI Draft, architecture document, ADR, Spec Delta design, or issue.
|
|
52
|
+
- Do not require diagrams for small copy, style, configuration, or single-point bug fixes.
|
|
53
|
+
- For data modeling, metadata management, model versioning, or lineage-analysis products, prefer ER, class/meta-model, DFD, and lineage diagrams before persistence implementation.
|
|
54
|
+
|
|
34
55
|
## Prerequisites
|
|
35
56
|
|
|
36
57
|
- Clear description of what should be visualized
|
|
@@ -178,7 +199,7 @@ Structure the complete Excalidraw file:
|
|
|
178
199
|
### Layout Tips
|
|
179
200
|
|
|
180
201
|
1. **Start positions**: Center important elements, use consistent spacing
|
|
181
|
-
2. **Spacing**:
|
|
202
|
+
2. **Spacing**:
|
|
182
203
|
- Horizontal gap: 200-300px between elements
|
|
183
204
|
- Vertical gap: 100-150px between rows
|
|
184
205
|
3. **Colors**: Use consistent color scheme
|
|
@@ -315,18 +336,18 @@ For specialized diagrams (e.g., AWS/GCP/Azure architecture diagrams), you can us
|
|
|
315
336
|
|
|
316
337
|
```
|
|
317
338
|
To use [AWS/GCP/Azure/etc.] architecture icons, please follow these steps:
|
|
318
|
-
|
|
339
|
+
|
|
319
340
|
1. Visit https://libraries.excalidraw.com/
|
|
320
341
|
2. Search for "[AWS Architecture Icons/etc.]" and download the .excalidrawlib file
|
|
321
342
|
3. Create directory: skills/excalidraw-diagram-generator/libraries/[icon-set-name]/
|
|
322
343
|
4. Place the downloaded file in that directory
|
|
323
344
|
5. Run the splitter script:
|
|
324
345
|
python skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py skills/excalidraw-diagram-generator/libraries/[icon-set-name]/
|
|
325
|
-
|
|
346
|
+
|
|
326
347
|
This will split the library into individual icon files for efficient use.
|
|
327
348
|
After setup is complete, I can create your diagram using the actual AWS/cloud icons.
|
|
328
|
-
|
|
329
|
-
Alternatively, I can create the diagram now using simple shapes (rectangles, ellipses)
|
|
349
|
+
|
|
350
|
+
Alternatively, I can create the diagram now using simple shapes (rectangles, ellipses)
|
|
330
351
|
which you can later replace with icons manually in Excalidraw.
|
|
331
352
|
```
|
|
332
353
|
|
|
@@ -389,15 +410,15 @@ The repository includes Python scripts that handle icon integration automaticall
|
|
|
389
410
|
<diagram-path> <icon-name> <x> <y> [--label "Text"] [--library-path PATH]
|
|
390
411
|
```
|
|
391
412
|
- Edit via `.excalidraw.edit` is enabled by default to avoid overwrite issues; pass `--no-use-edit-suffix` to disable.
|
|
392
|
-
|
|
413
|
+
|
|
393
414
|
**Examples**:
|
|
394
415
|
```bash
|
|
395
416
|
# Add EC2 icon at position (400, 300) with label
|
|
396
417
|
python scripts/add-icon-to-diagram.py diagram.excalidraw EC2 400 300 --label "Web Server"
|
|
397
|
-
|
|
418
|
+
|
|
398
419
|
# Add VPC icon at position (200, 150)
|
|
399
420
|
python scripts/add-icon-to-diagram.py diagram.excalidraw VPC 200 150
|
|
400
|
-
|
|
421
|
+
|
|
401
422
|
# Add icon from different library
|
|
402
423
|
python scripts/add-icon-to-diagram.py diagram.excalidraw Compute-Engine 500 200 \
|
|
403
424
|
--library-path libraries/gcp-icons --label "API Server"
|
|
@@ -409,15 +430,15 @@ The repository includes Python scripts that handle icon integration automaticall
|
|
|
409
430
|
<diagram-path> <from-x> <from-y> <to-x> <to-y> [--label "Text"] [--style solid|dashed|dotted] [--color HEX]
|
|
410
431
|
```
|
|
411
432
|
- Edit via `.excalidraw.edit` is enabled by default to avoid overwrite issues; pass `--no-use-edit-suffix` to disable.
|
|
412
|
-
|
|
433
|
+
|
|
413
434
|
**Examples**:
|
|
414
435
|
```bash
|
|
415
436
|
# Simple arrow from (300, 250) to (500, 300)
|
|
416
437
|
python scripts/add-arrow.py diagram.excalidraw 300 250 500 300
|
|
417
|
-
|
|
438
|
+
|
|
418
439
|
# Arrow with label
|
|
419
440
|
python scripts/add-arrow.py diagram.excalidraw 300 250 500 300 --label "HTTPS"
|
|
420
|
-
|
|
441
|
+
|
|
421
442
|
# Dashed arrow with custom color
|
|
422
443
|
python scripts/add-arrow.py diagram.excalidraw 400 350 600 400 --style dashed --color "#7950f2"
|
|
423
444
|
```
|
|
@@ -426,14 +447,14 @@ The repository includes Python scripts that handle icon integration automaticall
|
|
|
426
447
|
```bash
|
|
427
448
|
# Step 1: Create base diagram with title and structure
|
|
428
449
|
# (Create .excalidraw file with initial elements)
|
|
429
|
-
|
|
450
|
+
|
|
430
451
|
# Step 2: Add icons with labels
|
|
431
452
|
python scripts/add-icon-to-diagram.py my-diagram.excalidraw "Internet-gateway" 200 150 --label "Internet Gateway"
|
|
432
453
|
python scripts/add-icon-to-diagram.py my-diagram.excalidraw VPC 250 250
|
|
433
454
|
python scripts/add-icon-to-diagram.py my-diagram.excalidraw ELB 350 300 --label "Load Balancer"
|
|
434
455
|
python scripts/add-icon-to-diagram.py my-diagram.excalidraw EC2 450 350 --label "EC2 Instance"
|
|
435
456
|
python scripts/add-icon-to-diagram.py my-diagram.excalidraw RDS 550 400 --label "Database"
|
|
436
|
-
|
|
457
|
+
|
|
437
458
|
# Step 3: Add connecting arrows
|
|
438
459
|
python scripts/add-arrow.py my-diagram.excalidraw 250 200 300 250 # Internet → VPC
|
|
439
460
|
python scripts/add-arrow.py my-diagram.excalidraw 300 300 400 300 # VPC → ELB
|
|
@@ -453,7 +474,7 @@ The repository includes Python scripts that handle icon integration automaticall
|
|
|
453
474
|
|
|
454
475
|
Only use this if Python scripts are unavailable:
|
|
455
476
|
|
|
456
|
-
1. **Check for libraries**:
|
|
477
|
+
1. **Check for libraries**:
|
|
457
478
|
```
|
|
458
479
|
List directory: skills/excalidraw-diagram-generator/libraries/
|
|
459
480
|
Look for subdirectories containing reference.md files
|
|
@@ -549,7 +570,7 @@ python scripts/add-arrow.py my-aws-diagram.excalidraw 565 330 650 350 --label "S
|
|
|
549
570
|
- `icons/Internet-gateway.json` (298 lines)
|
|
550
571
|
- `icons/VPC.json` (550 lines)
|
|
551
572
|
- `icons/ELB.json` (363 lines)
|
|
552
|
-
- `icons/EC2.json` (231 lines)
|
|
573
|
+
- `icons/EC2.json` (231 lines)
|
|
553
574
|
- `icons/RDS.json` (similar size)
|
|
554
575
|
**Total: ~2000+ lines of JSON to process**
|
|
555
576
|
4. Extract elements from each JSON
|
|
@@ -77,7 +77,7 @@ def create_arrow(
|
|
|
77
77
|
) -> list:
|
|
78
78
|
"""
|
|
79
79
|
Create an arrow element.
|
|
80
|
-
|
|
80
|
+
|
|
81
81
|
Args:
|
|
82
82
|
from_x: Starting X coordinate
|
|
83
83
|
from_y: Starting Y coordinate
|
|
@@ -86,12 +86,12 @@ def create_arrow(
|
|
|
86
86
|
style: Line style (solid, dashed, dotted)
|
|
87
87
|
color: Arrow color
|
|
88
88
|
label: Optional text label on the arrow
|
|
89
|
-
|
|
89
|
+
|
|
90
90
|
Returns:
|
|
91
91
|
List of elements (arrow and optional label)
|
|
92
92
|
"""
|
|
93
93
|
elements = []
|
|
94
|
-
|
|
94
|
+
|
|
95
95
|
# Arrow element
|
|
96
96
|
arrow = {
|
|
97
97
|
"id": generate_unique_id(),
|
|
@@ -133,12 +133,12 @@ def create_arrow(
|
|
|
133
133
|
"lastCommittedPoint": None
|
|
134
134
|
}
|
|
135
135
|
elements.append(arrow)
|
|
136
|
-
|
|
136
|
+
|
|
137
137
|
# Optional label
|
|
138
138
|
if label:
|
|
139
139
|
mid_x = (from_x + to_x) / 2 - (len(label) * 5)
|
|
140
140
|
mid_y = (from_y + to_y) / 2 - 10
|
|
141
|
-
|
|
141
|
+
|
|
142
142
|
label_element = {
|
|
143
143
|
"id": generate_unique_id(),
|
|
144
144
|
"type": "text",
|
|
@@ -177,7 +177,7 @@ def create_arrow(
|
|
|
177
177
|
"lineHeight": 1.25
|
|
178
178
|
}
|
|
179
179
|
elements.append(label_element)
|
|
180
|
-
|
|
180
|
+
|
|
181
181
|
return elements
|
|
182
182
|
|
|
183
183
|
|
|
@@ -193,7 +193,7 @@ def add_arrow_to_diagram(
|
|
|
193
193
|
) -> None:
|
|
194
194
|
"""
|
|
195
195
|
Add an arrow to an Excalidraw diagram.
|
|
196
|
-
|
|
196
|
+
|
|
197
197
|
Args:
|
|
198
198
|
diagram_path: Path to the Excalidraw diagram file
|
|
199
199
|
from_x: Starting X coordinate
|
|
@@ -206,28 +206,28 @@ def add_arrow_to_diagram(
|
|
|
206
206
|
"""
|
|
207
207
|
print(f"Creating arrow from ({from_x}, {from_y}) to ({to_x}, {to_y})")
|
|
208
208
|
arrow_elements = create_arrow(from_x, from_y, to_x, to_y, style, color, label)
|
|
209
|
-
|
|
209
|
+
|
|
210
210
|
if label:
|
|
211
211
|
print(f" With label: '{label}'")
|
|
212
|
-
|
|
212
|
+
|
|
213
213
|
# Load diagram
|
|
214
214
|
print(f"Loading diagram: {diagram_path}")
|
|
215
215
|
with open(diagram_path, 'r', encoding='utf-8') as f:
|
|
216
216
|
diagram = json.load(f)
|
|
217
|
-
|
|
217
|
+
|
|
218
218
|
# Add arrow elements
|
|
219
219
|
if 'elements' not in diagram:
|
|
220
220
|
diagram['elements'] = []
|
|
221
|
-
|
|
221
|
+
|
|
222
222
|
original_count = len(diagram['elements'])
|
|
223
223
|
diagram['elements'].extend(arrow_elements)
|
|
224
224
|
print(f" Added {len(arrow_elements)} elements (total: {original_count} -> {len(diagram['elements'])})")
|
|
225
|
-
|
|
225
|
+
|
|
226
226
|
# Save diagram
|
|
227
227
|
print(f"Saving diagram")
|
|
228
228
|
with open(diagram_path, 'w', encoding='utf-8') as f:
|
|
229
229
|
json.dump(diagram, f, indent=2, ensure_ascii=False)
|
|
230
|
-
|
|
230
|
+
|
|
231
231
|
print(f"✓ Successfully added arrow to diagram")
|
|
232
232
|
|
|
233
233
|
|
|
@@ -247,20 +247,20 @@ def main():
|
|
|
247
247
|
print(" python add-arrow.py diagram.excalidraw 300 200 500 300")
|
|
248
248
|
print(" python add-arrow.py diagram.excalidraw 300 200 500 300 --label 'HTTP'")
|
|
249
249
|
sys.exit(1)
|
|
250
|
-
|
|
250
|
+
|
|
251
251
|
diagram_path = Path(sys.argv[1])
|
|
252
252
|
from_x = float(sys.argv[2])
|
|
253
253
|
from_y = float(sys.argv[3])
|
|
254
254
|
to_x = float(sys.argv[4])
|
|
255
255
|
to_y = float(sys.argv[5])
|
|
256
|
-
|
|
256
|
+
|
|
257
257
|
# Parse optional arguments
|
|
258
258
|
style = "solid"
|
|
259
259
|
color = "#1e1e1e"
|
|
260
260
|
label = None
|
|
261
261
|
# Default: use edit suffix to avoid editor overwrite issues
|
|
262
262
|
use_edit_suffix = True
|
|
263
|
-
|
|
263
|
+
|
|
264
264
|
i = 6
|
|
265
265
|
while i < len(sys.argv):
|
|
266
266
|
if sys.argv[i] == '--style':
|
|
@@ -296,12 +296,12 @@ def main():
|
|
|
296
296
|
else:
|
|
297
297
|
print(f"Error: Unknown option: {sys.argv[i]}")
|
|
298
298
|
sys.exit(1)
|
|
299
|
-
|
|
299
|
+
|
|
300
300
|
# Validate inputs
|
|
301
301
|
if not diagram_path.exists():
|
|
302
302
|
print(f"Error: Diagram file not found: {diagram_path}")
|
|
303
303
|
sys.exit(1)
|
|
304
|
-
|
|
304
|
+
|
|
305
305
|
try:
|
|
306
306
|
work_path, final_path = prepare_edit_path(diagram_path, use_edit_suffix)
|
|
307
307
|
add_arrow_to_diagram(work_path, from_x, from_y, to_x, to_y, style, color, label)
|
|
@@ -37,60 +37,60 @@ def calculate_bounding_box(elements: List[Dict[str, Any]]) -> Tuple[float, float
|
|
|
37
37
|
"""Calculate the bounding box (min_x, min_y, max_x, max_y) of icon elements."""
|
|
38
38
|
if not elements:
|
|
39
39
|
return (0, 0, 0, 0)
|
|
40
|
-
|
|
40
|
+
|
|
41
41
|
min_x = float('inf')
|
|
42
42
|
min_y = float('inf')
|
|
43
43
|
max_x = float('-inf')
|
|
44
44
|
max_y = float('-inf')
|
|
45
|
-
|
|
45
|
+
|
|
46
46
|
for element in elements:
|
|
47
47
|
if 'x' in element and 'y' in element:
|
|
48
48
|
x = element['x']
|
|
49
49
|
y = element['y']
|
|
50
50
|
width = element.get('width', 0)
|
|
51
51
|
height = element.get('height', 0)
|
|
52
|
-
|
|
52
|
+
|
|
53
53
|
min_x = min(min_x, x)
|
|
54
54
|
min_y = min(min_y, y)
|
|
55
55
|
max_x = max(max_x, x + width)
|
|
56
56
|
max_y = max(max_y, y + height)
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
return (min_x, min_y, max_x, max_y)
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
def transform_icon_elements(
|
|
62
|
-
elements: List[Dict[str, Any]],
|
|
63
|
-
target_x: float,
|
|
62
|
+
elements: List[Dict[str, Any]],
|
|
63
|
+
target_x: float,
|
|
64
64
|
target_y: float
|
|
65
65
|
) -> List[Dict[str, Any]]:
|
|
66
66
|
"""
|
|
67
67
|
Transform icon elements to target coordinates with unique IDs.
|
|
68
|
-
|
|
68
|
+
|
|
69
69
|
Args:
|
|
70
70
|
elements: Icon elements from JSON file
|
|
71
71
|
target_x: Target X coordinate (top-left position)
|
|
72
72
|
target_y: Target Y coordinate (top-left position)
|
|
73
|
-
|
|
73
|
+
|
|
74
74
|
Returns:
|
|
75
75
|
Transformed elements with new coordinates and IDs
|
|
76
76
|
"""
|
|
77
77
|
if not elements:
|
|
78
78
|
return []
|
|
79
|
-
|
|
79
|
+
|
|
80
80
|
# Calculate bounding box
|
|
81
81
|
min_x, min_y, max_x, max_y = calculate_bounding_box(elements)
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
# Calculate offset
|
|
84
84
|
offset_x = target_x - min_x
|
|
85
85
|
offset_y = target_y - min_y
|
|
86
|
-
|
|
86
|
+
|
|
87
87
|
# Create ID mapping: old_id -> new_id
|
|
88
88
|
id_mapping = {}
|
|
89
89
|
for element in elements:
|
|
90
90
|
if 'id' in element:
|
|
91
91
|
old_id = element['id']
|
|
92
92
|
id_mapping[old_id] = generate_unique_id()
|
|
93
|
-
|
|
93
|
+
|
|
94
94
|
# Create group ID mapping
|
|
95
95
|
group_id_mapping = {}
|
|
96
96
|
for element in elements:
|
|
@@ -98,47 +98,47 @@ def transform_icon_elements(
|
|
|
98
98
|
for old_group_id in element['groupIds']:
|
|
99
99
|
if old_group_id not in group_id_mapping:
|
|
100
100
|
group_id_mapping[old_group_id] = generate_unique_id()
|
|
101
|
-
|
|
101
|
+
|
|
102
102
|
# Transform elements
|
|
103
103
|
transformed = []
|
|
104
104
|
for element in elements:
|
|
105
105
|
new_element = element.copy()
|
|
106
|
-
|
|
106
|
+
|
|
107
107
|
# Update coordinates
|
|
108
108
|
if 'x' in new_element:
|
|
109
109
|
new_element['x'] = new_element['x'] + offset_x
|
|
110
110
|
if 'y' in new_element:
|
|
111
111
|
new_element['y'] = new_element['y'] + offset_y
|
|
112
|
-
|
|
112
|
+
|
|
113
113
|
# Update ID
|
|
114
114
|
if 'id' in new_element:
|
|
115
115
|
new_element['id'] = id_mapping[new_element['id']]
|
|
116
|
-
|
|
116
|
+
|
|
117
117
|
# Update group IDs
|
|
118
118
|
if 'groupIds' in new_element:
|
|
119
119
|
new_element['groupIds'] = [
|
|
120
120
|
group_id_mapping[gid] for gid in new_element['groupIds']
|
|
121
121
|
]
|
|
122
|
-
|
|
122
|
+
|
|
123
123
|
# Update binding references if they exist
|
|
124
124
|
if 'startBinding' in new_element and new_element['startBinding']:
|
|
125
125
|
if 'elementId' in new_element['startBinding']:
|
|
126
126
|
old_id = new_element['startBinding']['elementId']
|
|
127
127
|
if old_id in id_mapping:
|
|
128
128
|
new_element['startBinding']['elementId'] = id_mapping[old_id]
|
|
129
|
-
|
|
129
|
+
|
|
130
130
|
if 'endBinding' in new_element and new_element['endBinding']:
|
|
131
131
|
if 'elementId' in new_element['endBinding']:
|
|
132
132
|
old_id = new_element['endBinding']['elementId']
|
|
133
133
|
if old_id in id_mapping:
|
|
134
134
|
new_element['endBinding']['elementId'] = id_mapping[old_id]
|
|
135
|
-
|
|
135
|
+
|
|
136
136
|
# Update containerId if it exists
|
|
137
137
|
if 'containerId' in new_element and new_element['containerId']:
|
|
138
138
|
old_id = new_element['containerId']
|
|
139
139
|
if old_id in id_mapping:
|
|
140
140
|
new_element['containerId'] = id_mapping[old_id]
|
|
141
|
-
|
|
141
|
+
|
|
142
142
|
# Update boundElements if they exist
|
|
143
143
|
if 'boundElements' in new_element and new_element['boundElements']:
|
|
144
144
|
new_bound_elements = []
|
|
@@ -149,31 +149,31 @@ def transform_icon_elements(
|
|
|
149
149
|
bound_elem['id'] = id_mapping[old_id]
|
|
150
150
|
new_bound_elements.append(bound_elem)
|
|
151
151
|
new_element['boundElements'] = new_bound_elements
|
|
152
|
-
|
|
152
|
+
|
|
153
153
|
transformed.append(new_element)
|
|
154
|
-
|
|
154
|
+
|
|
155
155
|
return transformed
|
|
156
156
|
|
|
157
157
|
|
|
158
158
|
def load_icon(icon_name: str, library_path: Path) -> List[Dict[str, Any]]:
|
|
159
159
|
"""
|
|
160
160
|
Load icon elements from library.
|
|
161
|
-
|
|
161
|
+
|
|
162
162
|
Args:
|
|
163
163
|
icon_name: Name of the icon (e.g., "EC2", "VPC")
|
|
164
164
|
library_path: Path to the icon library directory
|
|
165
|
-
|
|
165
|
+
|
|
166
166
|
Returns:
|
|
167
167
|
List of icon elements
|
|
168
168
|
"""
|
|
169
169
|
icon_file = library_path / "icons" / f"{icon_name}.json"
|
|
170
|
-
|
|
170
|
+
|
|
171
171
|
if not icon_file.exists():
|
|
172
172
|
raise FileNotFoundError(f"Icon file not found: {icon_file}")
|
|
173
|
-
|
|
173
|
+
|
|
174
174
|
with open(icon_file, 'r', encoding='utf-8') as f:
|
|
175
175
|
icon_data = json.load(f)
|
|
176
|
-
|
|
176
|
+
|
|
177
177
|
return icon_data.get('elements', [])
|
|
178
178
|
|
|
179
179
|
|
|
@@ -216,12 +216,12 @@ def finalize_edit_path(work_path: Path, final_path: Path | None) -> None:
|
|
|
216
216
|
def create_text_label(text: str, x: float, y: float) -> Dict[str, Any]:
|
|
217
217
|
"""
|
|
218
218
|
Create a text label element.
|
|
219
|
-
|
|
219
|
+
|
|
220
220
|
Args:
|
|
221
221
|
text: Label text
|
|
222
222
|
x: X coordinate
|
|
223
223
|
y: Y coordinate
|
|
224
|
-
|
|
224
|
+
|
|
225
225
|
Returns:
|
|
226
226
|
Text element dictionary
|
|
227
227
|
"""
|
|
@@ -274,7 +274,7 @@ def add_icon_to_diagram(
|
|
|
274
274
|
) -> None:
|
|
275
275
|
"""
|
|
276
276
|
Add an icon to an Excalidraw diagram.
|
|
277
|
-
|
|
277
|
+
|
|
278
278
|
Args:
|
|
279
279
|
diagram_path: Path to the Excalidraw diagram file
|
|
280
280
|
icon_name: Name of the icon to add
|
|
@@ -287,43 +287,43 @@ def add_icon_to_diagram(
|
|
|
287
287
|
print(f"Loading icon: {icon_name}")
|
|
288
288
|
icon_elements = load_icon(icon_name, library_path)
|
|
289
289
|
print(f" Loaded {len(icon_elements)} elements")
|
|
290
|
-
|
|
290
|
+
|
|
291
291
|
# Transform icon elements
|
|
292
292
|
print(f"Transforming to position ({x}, {y})")
|
|
293
293
|
transformed_elements = transform_icon_elements(icon_elements, x, y)
|
|
294
|
-
|
|
294
|
+
|
|
295
295
|
# Calculate icon bounding box for label positioning
|
|
296
296
|
if label and transformed_elements:
|
|
297
297
|
min_x, min_y, max_x, max_y = calculate_bounding_box(transformed_elements)
|
|
298
298
|
icon_width = max_x - min_x
|
|
299
299
|
icon_height = max_y - min_y
|
|
300
|
-
|
|
300
|
+
|
|
301
301
|
# Position label below icon, centered
|
|
302
302
|
label_x = min_x + (icon_width / 2) - (len(label) * 5)
|
|
303
303
|
label_y = max_y + 10
|
|
304
|
-
|
|
304
|
+
|
|
305
305
|
label_element = create_text_label(label, label_x, label_y)
|
|
306
306
|
transformed_elements.append(label_element)
|
|
307
307
|
print(f" Added label: '{label}'")
|
|
308
|
-
|
|
308
|
+
|
|
309
309
|
# Load diagram
|
|
310
310
|
print(f"Loading diagram: {diagram_path}")
|
|
311
311
|
with open(diagram_path, 'r', encoding='utf-8') as f:
|
|
312
312
|
diagram = json.load(f)
|
|
313
|
-
|
|
313
|
+
|
|
314
314
|
# Add transformed elements
|
|
315
315
|
if 'elements' not in diagram:
|
|
316
316
|
diagram['elements'] = []
|
|
317
|
-
|
|
317
|
+
|
|
318
318
|
original_count = len(diagram['elements'])
|
|
319
319
|
diagram['elements'].extend(transformed_elements)
|
|
320
320
|
print(f" Added {len(transformed_elements)} elements (total: {original_count} -> {len(diagram['elements'])})")
|
|
321
|
-
|
|
321
|
+
|
|
322
322
|
# Save diagram
|
|
323
323
|
print(f"Saving diagram")
|
|
324
324
|
with open(diagram_path, 'w', encoding='utf-8') as f:
|
|
325
325
|
json.dump(diagram, f, indent=2, ensure_ascii=False)
|
|
326
|
-
|
|
326
|
+
|
|
327
327
|
print(f"✓ Successfully added '{icon_name}' icon to diagram")
|
|
328
328
|
|
|
329
329
|
|
|
@@ -342,22 +342,22 @@ def main():
|
|
|
342
342
|
print(" python add-icon-to-diagram.py diagram.excalidraw EC2 500 300")
|
|
343
343
|
print(" python add-icon-to-diagram.py diagram.excalidraw EC2 500 300 --label 'Web Server'")
|
|
344
344
|
sys.exit(1)
|
|
345
|
-
|
|
345
|
+
|
|
346
346
|
diagram_path = Path(sys.argv[1])
|
|
347
347
|
icon_name = sys.argv[2]
|
|
348
348
|
x = float(sys.argv[3])
|
|
349
349
|
y = float(sys.argv[4])
|
|
350
|
-
|
|
350
|
+
|
|
351
351
|
# Default library path
|
|
352
352
|
script_dir = Path(__file__).parent
|
|
353
353
|
default_library_path = script_dir.parent / "libraries" / "aws-architecture-icons"
|
|
354
|
-
|
|
354
|
+
|
|
355
355
|
# Parse optional arguments
|
|
356
356
|
library_path = default_library_path
|
|
357
357
|
label = None
|
|
358
358
|
# Default: use edit suffix to avoid editor overwrite issues
|
|
359
359
|
use_edit_suffix = True
|
|
360
|
-
|
|
360
|
+
|
|
361
361
|
i = 5
|
|
362
362
|
while i < len(sys.argv):
|
|
363
363
|
if sys.argv[i] == '--library-path':
|
|
@@ -383,16 +383,16 @@ def main():
|
|
|
383
383
|
else:
|
|
384
384
|
print(f"Error: Unknown option: {sys.argv[i]}")
|
|
385
385
|
sys.exit(1)
|
|
386
|
-
|
|
386
|
+
|
|
387
387
|
# Validate inputs
|
|
388
388
|
if not diagram_path.exists():
|
|
389
389
|
print(f"Error: Diagram file not found: {diagram_path}")
|
|
390
390
|
sys.exit(1)
|
|
391
|
-
|
|
391
|
+
|
|
392
392
|
if not library_path.exists():
|
|
393
393
|
print(f"Error: Library path not found: {library_path}")
|
|
394
394
|
sys.exit(1)
|
|
395
|
-
|
|
395
|
+
|
|
396
396
|
try:
|
|
397
397
|
work_path, final_path = prepare_edit_path(diagram_path, use_edit_suffix)
|
|
398
398
|
add_icon_to_diagram(work_path, icon_name, x, y, library_path, label)
|
|
@@ -404,4 +404,3 @@ def main():
|
|
|
404
404
|
|
|
405
405
|
if __name__ == '__main__':
|
|
406
406
|
main()
|
|
407
|
-
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: grilling
|
|
3
|
-
description: Grill the user relentlessly about a plan or
|
|
3
|
+
description: Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Interview me relentlessly about every aspect of this
|
|
6
|
+
Interview me relentlessly about every aspect of this until we reach a shared understanding. Walk down each branch of the decision tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
|
|
7
7
|
|
|
8
8
|
Ask the questions one at a time, waiting for feedback on each question before continuing. Asking multiple questions at once is bewildering.
|
|
9
9
|
|
|
10
|
-
If a *fact* can be found by exploring the
|
|
10
|
+
If a *fact* can be found by exploring the environment (filesystem, tools, etc.), look it up rather than asking me. The *decisions*, though, are mine — put each one to me and wait for my answer.
|
|
11
11
|
|
|
12
|
-
Do not
|
|
12
|
+
Do not act on it until I confirm we have reached a shared understanding.
|
|
@@ -9,7 +9,7 @@ Write a handoff document summarising the current conversation so a fresh agent c
|
|
|
9
9
|
|
|
10
10
|
Include a "suggested skills" section in the document, which suggests skills that the agent should invoke.
|
|
11
11
|
|
|
12
|
-
Do not duplicate content already captured in other artifacts (
|
|
12
|
+
Do not duplicate content already captured in other artifacts (specs, plans, ADRs, issues, commits, diffs). Reference them by path or URL instead.
|
|
13
13
|
|
|
14
14
|
Redact any sensitive information, such as API keys, passwords, or personally identifiable information.
|
|
15
15
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: implement
|
|
3
|
-
description: "Implement a piece of work based on a
|
|
3
|
+
description: "Implement a piece of work based on a spec or set of tickets."
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Implement the work described by the user in the
|
|
7
|
+
Implement the work described by the user in the spec or tickets.
|
|
8
8
|
|
|
9
9
|
Use /tdd where possible, at pre-agreed seams.
|
|
10
10
|
|
|
@@ -17,6 +17,11 @@ This command is _informed_ by the project's domain model and built on a shared d
|
|
|
17
17
|
|
|
18
18
|
### 1. Explore
|
|
19
19
|
|
|
20
|
+
**Scope before you scan — YAGNI.** Deepening a module pays off by making future changes to it easier, so put extra weight on the parts of the codebase that have recently changed. Decide *where* to look before you look:
|
|
21
|
+
|
|
22
|
+
- If the user named a direction — a module, a subsystem, a pain point — take it, and skip the inference below.
|
|
23
|
+
- Otherwise, walk back a good stretch of the commit history (`git log --oneline`) to find the codebase's hot spots — the files and areas that keep coming up — and let those paths pull your attention first. If the changes are scattered with no clear hot spot, widen the net.
|
|
24
|
+
|
|
20
25
|
Read the project's domain glossary (`CONTEXT.md`) and any ADRs in the area you're touching first.
|
|
21
26
|
|
|
22
27
|
Then use the Agent tool with `subagent_type=Explore` to walk the codebase. Don't follow rigid heuristics — explore organically and note where you experience friction:
|
|
@@ -56,7 +61,7 @@ Do NOT propose interfaces yet. After the file is written, ask the user: "Which o
|
|
|
56
61
|
|
|
57
62
|
### 3. Grilling loop
|
|
58
63
|
|
|
59
|
-
Once the user picks a candidate, run the `/grilling` skill to walk the
|
|
64
|
+
Once the user picks a candidate, run the `/grilling` skill to walk the decision tree with them — constraints, dependencies, the shape of the deepened module, what sits behind the seam, what tests survive.
|
|
60
65
|
|
|
61
66
|
Side effects happen inline as decisions crystallize — run the `/domain-modeling` skill to keep the domain model current as you go:
|
|
62
67
|
|