compound-engineering-pi 0.2.3
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/LICENSE +21 -0
- package/README.md +124 -0
- package/bin/compound-engineering-pi +12 -0
- package/bin/compound-plugin +12 -0
- package/compound-engineering-pi +12 -0
- package/compound-plugin +5 -0
- package/docs/pi.md +152 -0
- package/extensions/compound-engineering-compat.ts +452 -0
- package/package.json +84 -0
- package/pi-resources/compound-engineering/mcporter.json +7 -0
- package/plugins/coding-tutor/.claude-plugin/plugin.json +9 -0
- package/plugins/coding-tutor/README.md +37 -0
- package/plugins/coding-tutor/commands/quiz-me.md +1 -0
- package/plugins/coding-tutor/commands/sync-tutorials.md +25 -0
- package/plugins/coding-tutor/commands/teach-me.md +1 -0
- package/plugins/coding-tutor/skills/coding-tutor/SKILL.md +214 -0
- package/plugins/coding-tutor/skills/coding-tutor/scripts/create_tutorial.py +207 -0
- package/plugins/coding-tutor/skills/coding-tutor/scripts/index_tutorials.py +193 -0
- package/plugins/coding-tutor/skills/coding-tutor/scripts/quiz_priority.py +190 -0
- package/plugins/coding-tutor/skills/coding-tutor/scripts/setup_tutorials.py +118 -0
- package/plugins/compound-engineering/.claude-plugin/plugin.json +33 -0
- package/plugins/compound-engineering/CHANGELOG.md +457 -0
- package/plugins/compound-engineering/CLAUDE.md +89 -0
- package/plugins/compound-engineering/LICENSE +21 -0
- package/plugins/compound-engineering/README.md +232 -0
- package/plugins/compound-engineering/agents/design/design-implementation-reviewer.md +109 -0
- package/plugins/compound-engineering/agents/design/design-iterator.md +224 -0
- package/plugins/compound-engineering/agents/design/figma-design-sync.md +190 -0
- package/plugins/compound-engineering/agents/docs/ankane-readme-writer.md +65 -0
- package/plugins/compound-engineering/agents/research/best-practices-researcher.md +126 -0
- package/plugins/compound-engineering/agents/research/framework-docs-researcher.md +106 -0
- package/plugins/compound-engineering/agents/research/git-history-analyzer.md +59 -0
- package/plugins/compound-engineering/agents/research/learnings-researcher.md +264 -0
- package/plugins/compound-engineering/agents/research/repo-research-analyst.md +135 -0
- package/plugins/compound-engineering/agents/review/agent-native-reviewer.md +261 -0
- package/plugins/compound-engineering/agents/review/architecture-strategist.md +67 -0
- package/plugins/compound-engineering/agents/review/code-simplicity-reviewer.md +101 -0
- package/plugins/compound-engineering/agents/review/data-integrity-guardian.md +85 -0
- package/plugins/compound-engineering/agents/review/data-migration-expert.md +112 -0
- package/plugins/compound-engineering/agents/review/deployment-verification-agent.md +174 -0
- package/plugins/compound-engineering/agents/review/dhh-rails-reviewer.md +66 -0
- package/plugins/compound-engineering/agents/review/julik-frontend-races-reviewer.md +221 -0
- package/plugins/compound-engineering/agents/review/kieran-python-reviewer.md +133 -0
- package/plugins/compound-engineering/agents/review/kieran-rails-reviewer.md +115 -0
- package/plugins/compound-engineering/agents/review/kieran-typescript-reviewer.md +124 -0
- package/plugins/compound-engineering/agents/review/pattern-recognition-specialist.md +72 -0
- package/plugins/compound-engineering/agents/review/performance-oracle.md +137 -0
- package/plugins/compound-engineering/agents/review/schema-drift-detector.md +154 -0
- package/plugins/compound-engineering/agents/review/security-sentinel.md +114 -0
- package/plugins/compound-engineering/agents/workflow/bug-reproduction-validator.md +82 -0
- package/plugins/compound-engineering/agents/workflow/every-style-editor.md +64 -0
- package/plugins/compound-engineering/agents/workflow/lint.md +16 -0
- package/plugins/compound-engineering/agents/workflow/pr-comment-resolver.md +84 -0
- package/plugins/compound-engineering/agents/workflow/spec-flow-analyzer.md +134 -0
- package/plugins/compound-engineering/commands/agent-native-audit.md +278 -0
- package/plugins/compound-engineering/commands/changelog.md +138 -0
- package/plugins/compound-engineering/commands/create-agent-skill.md +9 -0
- package/plugins/compound-engineering/commands/deepen-plan.md +546 -0
- package/plugins/compound-engineering/commands/deploy-docs.md +113 -0
- package/plugins/compound-engineering/commands/feature-video.md +342 -0
- package/plugins/compound-engineering/commands/generate_command.md +163 -0
- package/plugins/compound-engineering/commands/heal-skill.md +143 -0
- package/plugins/compound-engineering/commands/lfg.md +20 -0
- package/plugins/compound-engineering/commands/release-docs.md +212 -0
- package/plugins/compound-engineering/commands/report-bug.md +151 -0
- package/plugins/compound-engineering/commands/reproduce-bug.md +100 -0
- package/plugins/compound-engineering/commands/resolve_parallel.md +35 -0
- package/plugins/compound-engineering/commands/resolve_todo_parallel.md +37 -0
- package/plugins/compound-engineering/commands/slfg.md +32 -0
- package/plugins/compound-engineering/commands/technical_review.md +8 -0
- package/plugins/compound-engineering/commands/test-browser.md +339 -0
- package/plugins/compound-engineering/commands/test-xcode.md +332 -0
- package/plugins/compound-engineering/commands/triage.md +311 -0
- package/plugins/compound-engineering/commands/workflows/brainstorm.md +124 -0
- package/plugins/compound-engineering/commands/workflows/compound.md +239 -0
- package/plugins/compound-engineering/commands/workflows/plan.md +551 -0
- package/plugins/compound-engineering/commands/workflows/review.md +526 -0
- package/plugins/compound-engineering/commands/workflows/work.md +433 -0
- package/plugins/compound-engineering/skills/agent-browser/SKILL.md +223 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/SKILL.md +435 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/action-parity-discipline.md +409 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/agent-execution-patterns.md +467 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/agent-native-testing.md +582 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/architecture-patterns.md +478 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/dynamic-context-injection.md +338 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/files-universal-interface.md +301 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/from-primitives-to-domain-tools.md +359 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/mcp-tool-design.md +506 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/mobile-patterns.md +871 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/product-implications.md +443 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/refactoring-to-prompt-native.md +317 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/self-modification.md +269 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/shared-workspace-architecture.md +680 -0
- package/plugins/compound-engineering/skills/agent-native-architecture/references/system-prompt-design.md +250 -0
- package/plugins/compound-engineering/skills/andrew-kane-gem-writer/SKILL.md +184 -0
- package/plugins/compound-engineering/skills/andrew-kane-gem-writer/references/database-adapters.md +231 -0
- package/plugins/compound-engineering/skills/andrew-kane-gem-writer/references/module-organization.md +121 -0
- package/plugins/compound-engineering/skills/andrew-kane-gem-writer/references/rails-integration.md +183 -0
- package/plugins/compound-engineering/skills/andrew-kane-gem-writer/references/resources.md +119 -0
- package/plugins/compound-engineering/skills/andrew-kane-gem-writer/references/testing-patterns.md +261 -0
- package/plugins/compound-engineering/skills/brainstorming/SKILL.md +190 -0
- package/plugins/compound-engineering/skills/compound-docs/SKILL.md +511 -0
- package/plugins/compound-engineering/skills/compound-docs/assets/critical-pattern-template.md +34 -0
- package/plugins/compound-engineering/skills/compound-docs/assets/resolution-template.md +93 -0
- package/plugins/compound-engineering/skills/compound-docs/references/yaml-schema.md +65 -0
- package/plugins/compound-engineering/skills/compound-docs/schema.yaml +176 -0
- package/plugins/compound-engineering/skills/create-agent-skills/SKILL.md +275 -0
- package/plugins/compound-engineering/skills/create-agent-skills/references/api-security.md +226 -0
- package/plugins/compound-engineering/skills/create-agent-skills/references/be-clear-and-direct.md +531 -0
- package/plugins/compound-engineering/skills/create-agent-skills/references/best-practices.md +404 -0
- package/plugins/compound-engineering/skills/create-agent-skills/references/common-patterns.md +595 -0
- package/plugins/compound-engineering/skills/create-agent-skills/references/core-principles.md +437 -0
- package/plugins/compound-engineering/skills/create-agent-skills/references/executable-code.md +175 -0
- package/plugins/compound-engineering/skills/create-agent-skills/references/iteration-and-testing.md +474 -0
- package/plugins/compound-engineering/skills/create-agent-skills/references/official-spec.md +134 -0
- package/plugins/compound-engineering/skills/create-agent-skills/references/recommended-structure.md +168 -0
- package/plugins/compound-engineering/skills/create-agent-skills/references/skill-structure.md +152 -0
- package/plugins/compound-engineering/skills/create-agent-skills/references/using-scripts.md +113 -0
- package/plugins/compound-engineering/skills/create-agent-skills/references/using-templates.md +112 -0
- package/plugins/compound-engineering/skills/create-agent-skills/references/workflows-and-validation.md +510 -0
- package/plugins/compound-engineering/skills/create-agent-skills/templates/router-skill.md +73 -0
- package/plugins/compound-engineering/skills/create-agent-skills/templates/simple-skill.md +33 -0
- package/plugins/compound-engineering/skills/create-agent-skills/workflows/add-reference.md +96 -0
- package/plugins/compound-engineering/skills/create-agent-skills/workflows/add-script.md +93 -0
- package/plugins/compound-engineering/skills/create-agent-skills/workflows/add-template.md +74 -0
- package/plugins/compound-engineering/skills/create-agent-skills/workflows/add-workflow.md +120 -0
- package/plugins/compound-engineering/skills/create-agent-skills/workflows/audit-skill.md +138 -0
- package/plugins/compound-engineering/skills/create-agent-skills/workflows/create-domain-expertise-skill.md +605 -0
- package/plugins/compound-engineering/skills/create-agent-skills/workflows/create-new-skill.md +191 -0
- package/plugins/compound-engineering/skills/create-agent-skills/workflows/get-guidance.md +121 -0
- package/plugins/compound-engineering/skills/create-agent-skills/workflows/upgrade-to-router.md +161 -0
- package/plugins/compound-engineering/skills/create-agent-skills/workflows/verify-skill.md +204 -0
- package/plugins/compound-engineering/skills/dhh-rails-style/SKILL.md +185 -0
- package/plugins/compound-engineering/skills/dhh-rails-style/references/architecture.md +653 -0
- package/plugins/compound-engineering/skills/dhh-rails-style/references/controllers.md +303 -0
- package/plugins/compound-engineering/skills/dhh-rails-style/references/frontend.md +510 -0
- package/plugins/compound-engineering/skills/dhh-rails-style/references/gems.md +266 -0
- package/plugins/compound-engineering/skills/dhh-rails-style/references/models.md +359 -0
- package/plugins/compound-engineering/skills/dhh-rails-style/references/testing.md +338 -0
- package/plugins/compound-engineering/skills/document-review/SKILL.md +87 -0
- package/plugins/compound-engineering/skills/dspy-ruby/SKILL.md +737 -0
- package/plugins/compound-engineering/skills/dspy-ruby/assets/config-template.rb +187 -0
- package/plugins/compound-engineering/skills/dspy-ruby/assets/module-template.rb +300 -0
- package/plugins/compound-engineering/skills/dspy-ruby/assets/signature-template.rb +221 -0
- package/plugins/compound-engineering/skills/dspy-ruby/references/core-concepts.md +674 -0
- package/plugins/compound-engineering/skills/dspy-ruby/references/observability.md +366 -0
- package/plugins/compound-engineering/skills/dspy-ruby/references/optimization.md +603 -0
- package/plugins/compound-engineering/skills/dspy-ruby/references/providers.md +418 -0
- package/plugins/compound-engineering/skills/dspy-ruby/references/toolsets.md +502 -0
- package/plugins/compound-engineering/skills/every-style-editor/SKILL.md +134 -0
- package/plugins/compound-engineering/skills/every-style-editor/references/EVERY_WRITE_STYLE.md +529 -0
- package/plugins/compound-engineering/skills/file-todos/SKILL.md +252 -0
- package/plugins/compound-engineering/skills/file-todos/assets/todo-template.md +155 -0
- package/plugins/compound-engineering/skills/frontend-design/SKILL.md +42 -0
- package/plugins/compound-engineering/skills/gemini-imagegen/SKILL.md +237 -0
- package/plugins/compound-engineering/skills/gemini-imagegen/requirements.txt +2 -0
- package/plugins/compound-engineering/skills/gemini-imagegen/scripts/compose_images.py +157 -0
- package/plugins/compound-engineering/skills/gemini-imagegen/scripts/edit_image.py +144 -0
- package/plugins/compound-engineering/skills/gemini-imagegen/scripts/gemini_images.py +263 -0
- package/plugins/compound-engineering/skills/gemini-imagegen/scripts/generate_image.py +133 -0
- package/plugins/compound-engineering/skills/gemini-imagegen/scripts/multi_turn_chat.py +216 -0
- package/plugins/compound-engineering/skills/git-worktree/SKILL.md +302 -0
- package/plugins/compound-engineering/skills/git-worktree/scripts/worktree-manager.sh +337 -0
- package/plugins/compound-engineering/skills/orchestrating-swarms/SKILL.md +1718 -0
- package/plugins/compound-engineering/skills/rclone/SKILL.md +150 -0
- package/plugins/compound-engineering/skills/rclone/scripts/check_setup.sh +60 -0
- package/plugins/compound-engineering/skills/resolve-pr-parallel/SKILL.md +89 -0
- package/plugins/compound-engineering/skills/resolve-pr-parallel/scripts/get-pr-comments +68 -0
- package/plugins/compound-engineering/skills/resolve-pr-parallel/scripts/resolve-pr-thread +23 -0
- package/plugins/compound-engineering/skills/skill-creator/SKILL.md +210 -0
- package/plugins/compound-engineering/skills/skill-creator/scripts/init_skill.py +303 -0
- package/plugins/compound-engineering/skills/skill-creator/scripts/package_skill.py +110 -0
- package/plugins/compound-engineering/skills/skill-creator/scripts/quick_validate.py +65 -0
- package/prompts/deepen-plan.md +549 -0
- package/prompts/feature-video.md +341 -0
- package/prompts/resolve_todo_parallel.md +36 -0
- package/prompts/test-browser.md +342 -0
- package/prompts/workflows-brainstorm.md +123 -0
- package/prompts/workflows-compound.md +238 -0
- package/prompts/workflows-plan.md +550 -0
- package/prompts/workflows-review.md +529 -0
- package/prompts/workflows-work.md +432 -0
- package/skills/agent-browser/SKILL.md +223 -0
- package/skills/agent-native-architecture/SKILL.md +435 -0
- package/skills/agent-native-architecture/references/action-parity-discipline.md +409 -0
- package/skills/agent-native-architecture/references/agent-execution-patterns.md +467 -0
- package/skills/agent-native-architecture/references/agent-native-testing.md +582 -0
- package/skills/agent-native-architecture/references/architecture-patterns.md +478 -0
- package/skills/agent-native-architecture/references/dynamic-context-injection.md +338 -0
- package/skills/agent-native-architecture/references/files-universal-interface.md +301 -0
- package/skills/agent-native-architecture/references/from-primitives-to-domain-tools.md +359 -0
- package/skills/agent-native-architecture/references/mcp-tool-design.md +506 -0
- package/skills/agent-native-architecture/references/mobile-patterns.md +871 -0
- package/skills/agent-native-architecture/references/product-implications.md +443 -0
- package/skills/agent-native-architecture/references/refactoring-to-prompt-native.md +317 -0
- package/skills/agent-native-architecture/references/self-modification.md +269 -0
- package/skills/agent-native-architecture/references/shared-workspace-architecture.md +680 -0
- package/skills/agent-native-architecture/references/system-prompt-design.md +250 -0
- package/skills/agent-native-reviewer/SKILL.md +260 -0
- package/skills/andrew-kane-gem-writer/SKILL.md +184 -0
- package/skills/andrew-kane-gem-writer/references/database-adapters.md +231 -0
- package/skills/andrew-kane-gem-writer/references/module-organization.md +121 -0
- package/skills/andrew-kane-gem-writer/references/rails-integration.md +183 -0
- package/skills/andrew-kane-gem-writer/references/resources.md +119 -0
- package/skills/andrew-kane-gem-writer/references/testing-patterns.md +261 -0
- package/skills/ankane-readme-writer/SKILL.md +63 -0
- package/skills/architecture-strategist/SKILL.md +66 -0
- package/skills/best-practices-researcher/SKILL.md +125 -0
- package/skills/brainstorming/SKILL.md +190 -0
- package/skills/bug-reproduction-validator/SKILL.md +81 -0
- package/skills/code-simplicity-reviewer/SKILL.md +100 -0
- package/skills/compound-docs/SKILL.md +511 -0
- package/skills/compound-docs/assets/critical-pattern-template.md +34 -0
- package/skills/compound-docs/assets/resolution-template.md +93 -0
- package/skills/compound-docs/references/yaml-schema.md +65 -0
- package/skills/compound-docs/schema.yaml +176 -0
- package/skills/create-agent-skills/SKILL.md +275 -0
- package/skills/create-agent-skills/references/api-security.md +226 -0
- package/skills/create-agent-skills/references/be-clear-and-direct.md +531 -0
- package/skills/create-agent-skills/references/best-practices.md +404 -0
- package/skills/create-agent-skills/references/common-patterns.md +595 -0
- package/skills/create-agent-skills/references/core-principles.md +437 -0
- package/skills/create-agent-skills/references/executable-code.md +175 -0
- package/skills/create-agent-skills/references/iteration-and-testing.md +474 -0
- package/skills/create-agent-skills/references/official-spec.md +134 -0
- package/skills/create-agent-skills/references/recommended-structure.md +168 -0
- package/skills/create-agent-skills/references/skill-structure.md +152 -0
- package/skills/create-agent-skills/references/using-scripts.md +113 -0
- package/skills/create-agent-skills/references/using-templates.md +112 -0
- package/skills/create-agent-skills/references/workflows-and-validation.md +510 -0
- package/skills/create-agent-skills/templates/router-skill.md +73 -0
- package/skills/create-agent-skills/templates/simple-skill.md +33 -0
- package/skills/create-agent-skills/workflows/add-reference.md +96 -0
- package/skills/create-agent-skills/workflows/add-script.md +93 -0
- package/skills/create-agent-skills/workflows/add-template.md +74 -0
- package/skills/create-agent-skills/workflows/add-workflow.md +120 -0
- package/skills/create-agent-skills/workflows/audit-skill.md +138 -0
- package/skills/create-agent-skills/workflows/create-domain-expertise-skill.md +605 -0
- package/skills/create-agent-skills/workflows/create-new-skill.md +191 -0
- package/skills/create-agent-skills/workflows/get-guidance.md +121 -0
- package/skills/create-agent-skills/workflows/upgrade-to-router.md +161 -0
- package/skills/create-agent-skills/workflows/verify-skill.md +204 -0
- package/skills/data-integrity-guardian/SKILL.md +84 -0
- package/skills/data-migration-expert/SKILL.md +111 -0
- package/skills/deployment-verification-agent/SKILL.md +173 -0
- package/skills/design-implementation-reviewer/SKILL.md +107 -0
- package/skills/design-iterator/SKILL.md +222 -0
- package/skills/dhh-rails-reviewer/SKILL.md +65 -0
- package/skills/dhh-rails-style/SKILL.md +185 -0
- package/skills/dhh-rails-style/references/architecture.md +653 -0
- package/skills/dhh-rails-style/references/controllers.md +303 -0
- package/skills/dhh-rails-style/references/frontend.md +510 -0
- package/skills/dhh-rails-style/references/gems.md +266 -0
- package/skills/dhh-rails-style/references/models.md +359 -0
- package/skills/dhh-rails-style/references/testing.md +338 -0
- package/skills/document-review/SKILL.md +87 -0
- package/skills/dspy-ruby/SKILL.md +737 -0
- package/skills/dspy-ruby/assets/config-template.rb +187 -0
- package/skills/dspy-ruby/assets/module-template.rb +300 -0
- package/skills/dspy-ruby/assets/signature-template.rb +221 -0
- package/skills/dspy-ruby/references/core-concepts.md +674 -0
- package/skills/dspy-ruby/references/observability.md +366 -0
- package/skills/dspy-ruby/references/optimization.md +603 -0
- package/skills/dspy-ruby/references/providers.md +418 -0
- package/skills/dspy-ruby/references/toolsets.md +502 -0
- package/skills/every-style-editor/SKILL.md +134 -0
- package/skills/every-style-editor/references/EVERY_WRITE_STYLE.md +529 -0
- package/skills/every-style-editor-2/SKILL.md +62 -0
- package/skills/figma-design-sync/SKILL.md +188 -0
- package/skills/file-todos/SKILL.md +252 -0
- package/skills/file-todos/assets/todo-template.md +155 -0
- package/skills/framework-docs-researcher/SKILL.md +105 -0
- package/skills/frontend-design/SKILL.md +42 -0
- package/skills/gemini-imagegen/SKILL.md +237 -0
- package/skills/gemini-imagegen/requirements.txt +2 -0
- package/skills/gemini-imagegen/scripts/compose_images.py +157 -0
- package/skills/gemini-imagegen/scripts/edit_image.py +144 -0
- package/skills/gemini-imagegen/scripts/gemini_images.py +263 -0
- package/skills/gemini-imagegen/scripts/generate_image.py +133 -0
- package/skills/gemini-imagegen/scripts/multi_turn_chat.py +216 -0
- package/skills/git-history-analyzer/SKILL.md +58 -0
- package/skills/git-worktree/SKILL.md +302 -0
- package/skills/git-worktree/scripts/worktree-manager.sh +337 -0
- package/skills/julik-frontend-races-reviewer/SKILL.md +220 -0
- package/skills/kieran-python-reviewer/SKILL.md +132 -0
- package/skills/kieran-rails-reviewer/SKILL.md +114 -0
- package/skills/kieran-typescript-reviewer/SKILL.md +123 -0
- package/skills/learnings-researcher/SKILL.md +263 -0
- package/skills/lint/SKILL.md +14 -0
- package/skills/orchestrating-swarms/SKILL.md +1718 -0
- package/skills/pattern-recognition-specialist/SKILL.md +71 -0
- package/skills/performance-oracle/SKILL.md +136 -0
- package/skills/pr-comment-resolver/SKILL.md +82 -0
- package/skills/rclone/SKILL.md +150 -0
- package/skills/rclone/scripts/check_setup.sh +60 -0
- package/skills/repo-research-analyst/SKILL.md +134 -0
- package/skills/resolve_pr_parallel/SKILL.md +89 -0
- package/skills/resolve_pr_parallel/scripts/get-pr-comments +68 -0
- package/skills/resolve_pr_parallel/scripts/resolve-pr-thread +23 -0
- package/skills/schema-drift-detector/SKILL.md +153 -0
- package/skills/security-sentinel/SKILL.md +113 -0
- package/skills/skill-creator/SKILL.md +210 -0
- package/skills/skill-creator/scripts/init_skill.py +303 -0
- package/skills/skill-creator/scripts/package_skill.py +110 -0
- package/skills/skill-creator/scripts/quick_validate.py +65 -0
- package/skills/spec-flow-analyzer/SKILL.md +133 -0
- package/src/commands/convert.ts +183 -0
- package/src/commands/install.ts +273 -0
- package/src/commands/list.ts +37 -0
- package/src/commands/sync.ts +89 -0
- package/src/converters/claude-to-codex.ts +182 -0
- package/src/converters/claude-to-opencode.ts +395 -0
- package/src/converters/claude-to-pi.ts +205 -0
- package/src/index.ts +22 -0
- package/src/parsers/claude-home.ts +65 -0
- package/src/parsers/claude.ts +252 -0
- package/src/sync/codex.ts +92 -0
- package/src/sync/opencode.ts +75 -0
- package/src/sync/pi.ts +88 -0
- package/src/targets/codex.ts +96 -0
- package/src/targets/index.ts +38 -0
- package/src/targets/opencode.ts +57 -0
- package/src/targets/pi.ts +131 -0
- package/src/templates/pi/compat-extension.ts +452 -0
- package/src/types/claude.ts +90 -0
- package/src/types/codex.ts +23 -0
- package/src/types/opencode.ts +54 -0
- package/src/types/pi.ts +40 -0
- package/src/utils/codex-agents.ts +64 -0
- package/src/utils/files.ts +77 -0
- package/src/utils/frontmatter.ts +65 -0
- package/src/utils/symlink.ts +43 -0
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
# Testing - DHH Rails Style
|
|
2
|
+
|
|
3
|
+
## Core Philosophy
|
|
4
|
+
|
|
5
|
+
"Minitest with fixtures - simple, fast, deterministic." The approach prioritizes pragmatism over convention.
|
|
6
|
+
|
|
7
|
+
## Why Minitest Over RSpec
|
|
8
|
+
|
|
9
|
+
- **Simpler**: Less DSL magic, plain Ruby assertions
|
|
10
|
+
- **Ships with Rails**: No additional dependencies
|
|
11
|
+
- **Faster boot times**: Less overhead
|
|
12
|
+
- **Plain Ruby**: No specialized syntax to learn
|
|
13
|
+
|
|
14
|
+
## Fixtures as Test Data
|
|
15
|
+
|
|
16
|
+
Rather than factories, fixtures provide preloaded data:
|
|
17
|
+
- Loaded once, reused across tests
|
|
18
|
+
- No runtime object creation overhead
|
|
19
|
+
- Explicit relationship visibility
|
|
20
|
+
- Deterministic IDs for easier debugging
|
|
21
|
+
|
|
22
|
+
### Fixture Structure
|
|
23
|
+
```yaml
|
|
24
|
+
# test/fixtures/users.yml
|
|
25
|
+
david:
|
|
26
|
+
identity: david
|
|
27
|
+
account: basecamp
|
|
28
|
+
role: admin
|
|
29
|
+
|
|
30
|
+
jason:
|
|
31
|
+
identity: jason
|
|
32
|
+
account: basecamp
|
|
33
|
+
role: member
|
|
34
|
+
|
|
35
|
+
# test/fixtures/rooms.yml
|
|
36
|
+
watercooler:
|
|
37
|
+
name: Water Cooler
|
|
38
|
+
creator: david
|
|
39
|
+
direct: false
|
|
40
|
+
|
|
41
|
+
# test/fixtures/messages.yml
|
|
42
|
+
greeting:
|
|
43
|
+
body: Hello everyone!
|
|
44
|
+
room: watercooler
|
|
45
|
+
creator: david
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Using Fixtures in Tests
|
|
49
|
+
```ruby
|
|
50
|
+
test "sending a message" do
|
|
51
|
+
user = users(:david)
|
|
52
|
+
room = rooms(:watercooler)
|
|
53
|
+
|
|
54
|
+
# Test with fixture data
|
|
55
|
+
end
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Dynamic Fixture Values
|
|
59
|
+
ERB enables time-sensitive data:
|
|
60
|
+
```yaml
|
|
61
|
+
recent_card:
|
|
62
|
+
title: Recent Card
|
|
63
|
+
created_at: <%= 1.hour.ago %>
|
|
64
|
+
|
|
65
|
+
old_card:
|
|
66
|
+
title: Old Card
|
|
67
|
+
created_at: <%= 1.month.ago %>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Test Organization
|
|
71
|
+
|
|
72
|
+
### Unit Tests
|
|
73
|
+
Verify business logic using setup blocks and standard assertions:
|
|
74
|
+
|
|
75
|
+
```ruby
|
|
76
|
+
class CardTest < ActiveSupport::TestCase
|
|
77
|
+
setup do
|
|
78
|
+
@card = cards(:one)
|
|
79
|
+
@user = users(:david)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
test "closing a card creates a closure" do
|
|
83
|
+
assert_difference -> { Card::Closure.count } do
|
|
84
|
+
@card.close(creator: @user)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
assert @card.closed?
|
|
88
|
+
assert_equal @user, @card.closure.creator
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
test "reopening a card destroys the closure" do
|
|
92
|
+
@card.close(creator: @user)
|
|
93
|
+
|
|
94
|
+
assert_difference -> { Card::Closure.count }, -1 do
|
|
95
|
+
@card.reopen
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
refute @card.closed?
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Integration Tests
|
|
104
|
+
Test full request/response cycles:
|
|
105
|
+
|
|
106
|
+
```ruby
|
|
107
|
+
class CardsControllerTest < ActionDispatch::IntegrationTest
|
|
108
|
+
setup do
|
|
109
|
+
@user = users(:david)
|
|
110
|
+
sign_in @user
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
test "closing a card" do
|
|
114
|
+
card = cards(:one)
|
|
115
|
+
|
|
116
|
+
post card_closure_path(card)
|
|
117
|
+
|
|
118
|
+
assert_response :success
|
|
119
|
+
assert card.reload.closed?
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
test "unauthorized user cannot close card" do
|
|
123
|
+
sign_in users(:guest)
|
|
124
|
+
card = cards(:one)
|
|
125
|
+
|
|
126
|
+
post card_closure_path(card)
|
|
127
|
+
|
|
128
|
+
assert_response :forbidden
|
|
129
|
+
refute card.reload.closed?
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### System Tests
|
|
135
|
+
Browser-based tests using Capybara:
|
|
136
|
+
|
|
137
|
+
```ruby
|
|
138
|
+
class MessagesTest < ApplicationSystemTestCase
|
|
139
|
+
test "sending a message" do
|
|
140
|
+
sign_in users(:david)
|
|
141
|
+
visit room_path(rooms(:watercooler))
|
|
142
|
+
|
|
143
|
+
fill_in "Message", with: "Hello, world!"
|
|
144
|
+
click_button "Send"
|
|
145
|
+
|
|
146
|
+
assert_text "Hello, world!"
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
test "editing own message" do
|
|
150
|
+
sign_in users(:david)
|
|
151
|
+
visit room_path(rooms(:watercooler))
|
|
152
|
+
|
|
153
|
+
within "#message_#{messages(:greeting).id}" do
|
|
154
|
+
click_on "Edit"
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
fill_in "Message", with: "Updated message"
|
|
158
|
+
click_button "Save"
|
|
159
|
+
|
|
160
|
+
assert_text "Updated message"
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
test "drag and drop card to new column" do
|
|
164
|
+
sign_in users(:david)
|
|
165
|
+
visit board_path(boards(:main))
|
|
166
|
+
|
|
167
|
+
card = find("#card_#{cards(:one).id}")
|
|
168
|
+
target = find("#column_#{columns(:done).id}")
|
|
169
|
+
|
|
170
|
+
card.drag_to target
|
|
171
|
+
|
|
172
|
+
assert_selector "#column_#{columns(:done).id} #card_#{cards(:one).id}"
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Advanced Patterns
|
|
178
|
+
|
|
179
|
+
### Time Testing
|
|
180
|
+
Use `travel_to` for deterministic time-dependent assertions:
|
|
181
|
+
|
|
182
|
+
```ruby
|
|
183
|
+
test "card expires after 30 days" do
|
|
184
|
+
card = cards(:one)
|
|
185
|
+
|
|
186
|
+
travel_to 31.days.from_now do
|
|
187
|
+
assert card.expired?
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### External API Testing with VCR
|
|
193
|
+
Record and replay HTTP interactions:
|
|
194
|
+
|
|
195
|
+
```ruby
|
|
196
|
+
test "fetches user data from API" do
|
|
197
|
+
VCR.use_cassette("user_api") do
|
|
198
|
+
user_data = ExternalApi.fetch_user(123)
|
|
199
|
+
|
|
200
|
+
assert_equal "John", user_data[:name]
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Background Job Testing
|
|
206
|
+
Assert job enqueueing and email delivery:
|
|
207
|
+
|
|
208
|
+
```ruby
|
|
209
|
+
test "closing card enqueues notification job" do
|
|
210
|
+
card = cards(:one)
|
|
211
|
+
|
|
212
|
+
assert_enqueued_with(job: NotifyWatchersJob, args: [card]) do
|
|
213
|
+
card.close
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
test "welcome email is sent on signup" do
|
|
218
|
+
assert_emails 1 do
|
|
219
|
+
Identity.create!(email: "new@example.com")
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Testing Turbo Streams
|
|
225
|
+
```ruby
|
|
226
|
+
test "message creation broadcasts to room" do
|
|
227
|
+
room = rooms(:watercooler)
|
|
228
|
+
|
|
229
|
+
assert_turbo_stream_broadcasts [room, :messages] do
|
|
230
|
+
room.messages.create!(body: "Test", creator: users(:david))
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## Testing Principles
|
|
236
|
+
|
|
237
|
+
### 1. Test Observable Behavior
|
|
238
|
+
Focus on what the code does, not how it does it:
|
|
239
|
+
|
|
240
|
+
```ruby
|
|
241
|
+
# ❌ Testing implementation
|
|
242
|
+
test "calls notify method on each watcher" do
|
|
243
|
+
card.expects(:notify).times(3)
|
|
244
|
+
card.close
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
# ✅ Testing behavior
|
|
248
|
+
test "watchers receive notifications when card closes" do
|
|
249
|
+
assert_difference -> { Notification.count }, 3 do
|
|
250
|
+
card.close
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### 2. Don't Mock Everything
|
|
256
|
+
|
|
257
|
+
```ruby
|
|
258
|
+
# ❌ Over-mocked test
|
|
259
|
+
test "sending message" do
|
|
260
|
+
room = mock("room")
|
|
261
|
+
user = mock("user")
|
|
262
|
+
message = mock("message")
|
|
263
|
+
|
|
264
|
+
room.expects(:messages).returns(stub(create!: message))
|
|
265
|
+
message.expects(:broadcast_create)
|
|
266
|
+
|
|
267
|
+
MessagesController.new.create
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
# ✅ Test the real thing
|
|
271
|
+
test "sending message" do
|
|
272
|
+
sign_in users(:david)
|
|
273
|
+
post room_messages_url(rooms(:watercooler)),
|
|
274
|
+
params: { message: { body: "Hello" } }
|
|
275
|
+
|
|
276
|
+
assert_response :success
|
|
277
|
+
assert Message.exists?(body: "Hello")
|
|
278
|
+
end
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### 3. Tests Ship with Features
|
|
282
|
+
Same commit, not TDD-first but together. Neither before (strict TDD) nor after (deferred testing).
|
|
283
|
+
|
|
284
|
+
### 4. Security Fixes Always Include Regression Tests
|
|
285
|
+
Every security fix must include a test that would have caught the vulnerability.
|
|
286
|
+
|
|
287
|
+
### 5. Integration Tests Validate Complete Workflows
|
|
288
|
+
Don't just test individual pieces - test that they work together.
|
|
289
|
+
|
|
290
|
+
## File Organization
|
|
291
|
+
|
|
292
|
+
```
|
|
293
|
+
test/
|
|
294
|
+
├── controllers/ # Integration tests for controllers
|
|
295
|
+
├── fixtures/ # YAML fixtures for all models
|
|
296
|
+
├── helpers/ # Helper method tests
|
|
297
|
+
├── integration/ # API integration tests
|
|
298
|
+
├── jobs/ # Background job tests
|
|
299
|
+
├── mailers/ # Mailer tests
|
|
300
|
+
├── models/ # Unit tests for models
|
|
301
|
+
├── system/ # Browser-based system tests
|
|
302
|
+
└── test_helper.rb # Test configuration
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
## Test Helper Setup
|
|
306
|
+
|
|
307
|
+
```ruby
|
|
308
|
+
# test/test_helper.rb
|
|
309
|
+
ENV["RAILS_ENV"] ||= "test"
|
|
310
|
+
require_relative "../config/environment"
|
|
311
|
+
require "rails/test_help"
|
|
312
|
+
|
|
313
|
+
class ActiveSupport::TestCase
|
|
314
|
+
fixtures :all
|
|
315
|
+
|
|
316
|
+
parallelize(workers: :number_of_processors)
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
class ActionDispatch::IntegrationTest
|
|
320
|
+
include SignInHelper
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
|
|
324
|
+
driven_by :selenium, using: :headless_chrome
|
|
325
|
+
end
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
## Sign In Helper
|
|
329
|
+
|
|
330
|
+
```ruby
|
|
331
|
+
# test/support/sign_in_helper.rb
|
|
332
|
+
module SignInHelper
|
|
333
|
+
def sign_in(user)
|
|
334
|
+
session = user.identity.sessions.create!
|
|
335
|
+
cookies.signed[:session_id] = session.id
|
|
336
|
+
end
|
|
337
|
+
end
|
|
338
|
+
```
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: document-review
|
|
3
|
+
description: This skill should be used to refine brainstorm or plan documents before proceeding to the next workflow step. It applies when a brainstorm or plan document exists and the user wants to improve it.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Document Review
|
|
7
|
+
|
|
8
|
+
Improve brainstorm or plan documents through structured review.
|
|
9
|
+
|
|
10
|
+
## Step 1: Get the Document
|
|
11
|
+
|
|
12
|
+
**If a document path is provided:** Read it, then proceed to Step 2.
|
|
13
|
+
|
|
14
|
+
**If no document is specified:** Ask which document to review, or look for the most recent brainstorm/plan in `docs/brainstorms/` or `docs/plans/`.
|
|
15
|
+
|
|
16
|
+
## Step 2: Assess
|
|
17
|
+
|
|
18
|
+
Read through the document and ask:
|
|
19
|
+
|
|
20
|
+
- What is unclear?
|
|
21
|
+
- What is unnecessary?
|
|
22
|
+
- What decision is being avoided?
|
|
23
|
+
- What assumptions are unstated?
|
|
24
|
+
- Where could scope accidentally expand?
|
|
25
|
+
|
|
26
|
+
These questions surface issues. Don't fix yet—just note what you find.
|
|
27
|
+
|
|
28
|
+
## Step 3: Evaluate
|
|
29
|
+
|
|
30
|
+
Score the document against these criteria:
|
|
31
|
+
|
|
32
|
+
| Criterion | What to Check |
|
|
33
|
+
|-----------|---------------|
|
|
34
|
+
| **Clarity** | Problem statement is clear, no vague language ("probably," "consider," "try to") |
|
|
35
|
+
| **Completeness** | Required sections present, constraints stated, open questions flagged |
|
|
36
|
+
| **Specificity** | Concrete enough for next step (brainstorm → can plan, plan → can implement) |
|
|
37
|
+
| **YAGNI** | No hypothetical features, simplest approach chosen |
|
|
38
|
+
|
|
39
|
+
If invoked within a workflow (after `/workflows:brainstorm` or `/workflows:plan`), also check:
|
|
40
|
+
- **User intent fidelity** — Document reflects what was discussed, assumptions validated
|
|
41
|
+
|
|
42
|
+
## Step 4: Identify the Critical Improvement
|
|
43
|
+
|
|
44
|
+
Among everything found in Steps 2-3, does one issue stand out? If something would significantly improve the document's quality, this is the "must address" item. Highlight it prominently.
|
|
45
|
+
|
|
46
|
+
## Step 5: Make Changes
|
|
47
|
+
|
|
48
|
+
Present your findings, then:
|
|
49
|
+
|
|
50
|
+
1. **Auto-fix** minor issues (vague language, formatting) without asking
|
|
51
|
+
2. **Ask approval** before substantive changes (restructuring, removing sections, changing meaning)
|
|
52
|
+
3. **Update** the document inline—no separate files, no metadata sections
|
|
53
|
+
|
|
54
|
+
### Simplification Guidance
|
|
55
|
+
|
|
56
|
+
Simplification is purposeful removal of unnecessary complexity, not shortening for its own sake.
|
|
57
|
+
|
|
58
|
+
**Simplify when:**
|
|
59
|
+
- Content serves hypothetical future needs, not current ones
|
|
60
|
+
- Sections repeat information already covered elsewhere
|
|
61
|
+
- Detail exceeds what's needed to take the next step
|
|
62
|
+
- Abstractions or structure add overhead without clarity
|
|
63
|
+
|
|
64
|
+
**Don't simplify:**
|
|
65
|
+
- Constraints or edge cases that affect implementation
|
|
66
|
+
- Rationale that explains why alternatives were rejected
|
|
67
|
+
- Open questions that need resolution
|
|
68
|
+
|
|
69
|
+
## Step 6: Offer Next Action
|
|
70
|
+
|
|
71
|
+
After changes are complete, ask:
|
|
72
|
+
|
|
73
|
+
1. **Refine again** - Another review pass
|
|
74
|
+
2. **Review complete** - Document is ready
|
|
75
|
+
|
|
76
|
+
### Iteration Guidance
|
|
77
|
+
|
|
78
|
+
After 2 refinement passes, recommend completion—diminishing returns are likely. But if the user wants to continue, allow it.
|
|
79
|
+
|
|
80
|
+
Return control to the caller (workflow or user) after selection.
|
|
81
|
+
|
|
82
|
+
## What NOT to Do
|
|
83
|
+
|
|
84
|
+
- Do not rewrite the entire document
|
|
85
|
+
- Do not add new sections or requirements the user didn't discuss
|
|
86
|
+
- Do not over-engineer or add complexity
|
|
87
|
+
- Do not create separate review files or add metadata sections
|