@jakkrichm/create-nexus-devflow 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/LICENSE +21 -0
- package/README.md +82 -0
- package/bin/create-nexus-devflow.js +275 -0
- package/lib/update.js +379 -0
- package/package.json +53 -0
- package/template/.agents/skills/00-discover/SKILL.md +170 -0
- package/template/.agents/skills/10-define/SKILL.md +170 -0
- package/template/.agents/skills/20-spec/SKILL.md +156 -0
- package/template/.agents/skills/30-plan/SKILL.md +221 -0
- package/template/.agents/skills/40-implement/SKILL.md +166 -0
- package/template/.agents/skills/50-verify/SKILL.md +188 -0
- package/template/.agents/skills/60-report/SKILL.md +183 -0
- package/template/.agents/skills/70-release/SKILL.md +155 -0
- package/template/.agents/skills/9arm-skills/README.md +51 -0
- package/template/.agents/skills/9arm-skills/debug-mantra/SKILL.md +86 -0
- package/template/.agents/skills/9arm-skills/management-talk/SKILL.md +79 -0
- package/template/.agents/skills/9arm-skills/post-mortem/SKILL.md +71 -0
- package/template/.agents/skills/9arm-skills/scrutinize/SKILL.md +72 -0
- package/template/.agents/skills/agent/SKILL.md +165 -0
- package/template/.agents/skills/api-and-interface-design/SKILL.md +294 -0
- package/template/.agents/skills/app-builder/SKILL.md +75 -0
- package/template/.agents/skills/app-builder/agent-coordination.md +71 -0
- package/template/.agents/skills/app-builder/feature-building.md +53 -0
- package/template/.agents/skills/app-builder/project-detection.md +34 -0
- package/template/.agents/skills/app-builder/scaffolding.md +118 -0
- package/template/.agents/skills/app-builder/tech-stack.md +40 -0
- package/template/.agents/skills/app-builder/templates/SKILL.md +39 -0
- package/template/.agents/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/template/.agents/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/template/.agents/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/template/.agents/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/template/.agents/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/template/.agents/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/template/.agents/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/template/.agents/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
- package/template/.agents/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
- package/template/.agents/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
- package/template/.agents/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
- package/template/.agents/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/template/.agents/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
- package/template/.agents/skills/architecture/SKILL.md +55 -0
- package/template/.agents/skills/architecture/context-discovery.md +43 -0
- package/template/.agents/skills/architecture/examples.md +94 -0
- package/template/.agents/skills/architecture/pattern-selection.md +68 -0
- package/template/.agents/skills/architecture/patterns-reference.md +50 -0
- package/template/.agents/skills/architecture/trade-off-analysis.md +77 -0
- package/template/.agents/skills/bash-linux/SKILL.md +199 -0
- package/template/.agents/skills/behavioral-modes/SKILL.md +242 -0
- package/template/.agents/skills/brainstorm/SKILL.md +168 -0
- package/template/.agents/skills/browser-testing-with-devtools/SKILL.md +302 -0
- package/template/.agents/skills/changelog/SKILL.md +109 -0
- package/template/.agents/skills/check-for-updates/SKILL.md +117 -0
- package/template/.agents/skills/ci-cd-and-automation/SKILL.md +390 -0
- package/template/.agents/skills/code-review-and-quality/SKILL.md +392 -0
- package/template/.agents/skills/code-simplification/SKILL.md +331 -0
- package/template/.agents/skills/codebase-design/DEEPENING.md +24 -0
- package/template/.agents/skills/codebase-design/DESIGN-IT-TWICE.md +28 -0
- package/template/.agents/skills/codebase-design/SKILL.md +58 -0
- package/template/.agents/skills/commit/SKILL.md +63 -0
- package/template/.agents/skills/competitor-analysis/SKILL.md +66 -0
- package/template/.agents/skills/context-engineering/SKILL.md +290 -0
- package/template/.agents/skills/database-design/SKILL.md +52 -0
- package/template/.agents/skills/database-design/database-selection.md +43 -0
- package/template/.agents/skills/database-design/indexing.md +39 -0
- package/template/.agents/skills/database-design/migrations.md +48 -0
- package/template/.agents/skills/database-design/optimization.md +36 -0
- package/template/.agents/skills/database-design/orm-selection.md +30 -0
- package/template/.agents/skills/database-design/schema-design.md +56 -0
- package/template/.agents/skills/database-design/scripts/schema_validator.py +172 -0
- package/template/.agents/skills/debug/SKILL.md +131 -0
- package/template/.agents/skills/debugging-and-error-recovery/SKILL.md +298 -0
- package/template/.agents/skills/deploy/SKILL.md +91 -0
- package/template/.agents/skills/deployment-procedures/SKILL.md +241 -0
- package/template/.agents/skills/deprecation-and-migration/SKILL.md +206 -0
- package/template/.agents/skills/devflow/SKILL.md +89 -0
- package/template/.agents/skills/devflow-concept-intake/SKILL.md +150 -0
- package/template/.agents/skills/devflow-concept-intake/agents/openai.yaml +4 -0
- package/template/.agents/skills/devflow-concept-intake/references/adoption-proposal-template.md +60 -0
- package/template/.agents/skills/devflow-concept-intake/references/concept-report-template.md +47 -0
- package/template/.agents/skills/devflow-concept-intake/references/upstream-tracking-template.md +51 -0
- package/template/.agents/skills/devflow-wiki/SKILL.md +75 -0
- package/template/.agents/skills/diagnosing-bugs/SKILL.md +93 -0
- package/template/.agents/skills/documentation-and-adrs/SKILL.md +278 -0
- package/template/.agents/skills/domain-modeling/ADR-FORMAT.md +47 -0
- package/template/.agents/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/template/.agents/skills/domain-modeling/SKILL.md +74 -0
- package/template/.agents/skills/english-to-thai-translator/SKILL.md +125 -0
- package/template/.agents/skills/followup/SKILL.md +83 -0
- package/template/.agents/skills/frontend-ui-engineering/SKILL.md +326 -0
- package/template/.agents/skills/frontend-ui-engineering/accessibility-checklist.md +159 -0
- package/template/.agents/skills/git-workflow-and-versioning/SKILL.md +300 -0
- package/template/.agents/skills/goal/SKILL.md +148 -0
- package/template/.agents/skills/handoff/SKILL.md +46 -0
- package/template/.agents/skills/help/SKILL.md +253 -0
- package/template/.agents/skills/human-review-decisions/SKILL.md +74 -0
- package/template/.agents/skills/i18n-localization/SKILL.md +154 -0
- package/template/.agents/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/template/.agents/skills/idea-refine/SKILL.md +178 -0
- package/template/.agents/skills/idea-refine/examples.md +238 -0
- package/template/.agents/skills/idea-refine/frameworks.md +99 -0
- package/template/.agents/skills/idea-refine/refinement-criteria.md +113 -0
- package/template/.agents/skills/idea-refine/scripts/idea-refine.sh +15 -0
- package/template/.agents/skills/incremental-implementation/SKILL.md +248 -0
- package/template/.agents/skills/insight/SKILL.md +131 -0
- package/template/.agents/skills/insight-capture/SKILL.md +84 -0
- package/template/.agents/skills/intelligent-routing/SKILL.md +176 -0
- package/template/.agents/skills/issue-triage/SKILL.md +115 -0
- package/template/.agents/skills/lint-and-validate/SKILL.md +45 -0
- package/template/.agents/skills/lint-and-validate/scripts/lint_runner.py +184 -0
- package/template/.agents/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/template/.agents/skills/mcp-builder/SKILL.md +176 -0
- package/template/.agents/skills/md2html/SKILL.md +154 -0
- package/template/.agents/skills/md2html/components.md +505 -0
- package/template/.agents/skills/md2html/template.html +1152 -0
- package/template/.agents/skills/merge/SKILL.md +76 -0
- package/template/.agents/skills/mobile-design/SKILL.md +394 -0
- package/template/.agents/skills/mobile-design/decision-trees.md +516 -0
- package/template/.agents/skills/mobile-design/mobile-backend.md +491 -0
- package/template/.agents/skills/mobile-design/mobile-color-system.md +420 -0
- package/template/.agents/skills/mobile-design/mobile-debugging.md +122 -0
- package/template/.agents/skills/mobile-design/mobile-design-thinking.md +357 -0
- package/template/.agents/skills/mobile-design/mobile-navigation.md +458 -0
- package/template/.agents/skills/mobile-design/mobile-performance.md +767 -0
- package/template/.agents/skills/mobile-design/mobile-testing.md +356 -0
- package/template/.agents/skills/mobile-design/mobile-typography.md +433 -0
- package/template/.agents/skills/mobile-design/platform-android.md +666 -0
- package/template/.agents/skills/mobile-design/platform-ios.md +561 -0
- package/template/.agents/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/template/.agents/skills/mobile-design/touch-psychology.md +537 -0
- package/template/.agents/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -0
- package/template/.agents/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
- package/template/.agents/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
- package/template/.agents/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
- package/template/.agents/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
- package/template/.agents/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
- package/template/.agents/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
- package/template/.agents/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
- package/template/.agents/skills/nextjs-react-expert/SKILL.md +286 -0
- package/template/.agents/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/template/.agents/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/template/.agents/skills/nodejs-best-practices/SKILL.md +333 -0
- package/template/.agents/skills/obsidian-bases/SKILL.md +506 -0
- package/template/.agents/skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md +173 -0
- package/template/.agents/skills/obsidian-cli/SKILL.md +115 -0
- package/template/.agents/skills/obsidian-clipper-template-creator/SKILL.md +73 -0
- package/template/.agents/skills/obsidian-clipper-template-creator/assets/clipping-template.json +51 -0
- package/template/.agents/skills/obsidian-clipper-template-creator/assets/recipe-template.json +48 -0
- package/template/.agents/skills/obsidian-clipper-template-creator/references/analysis-workflow.md +79 -0
- package/template/.agents/skills/obsidian-clipper-template-creator/references/bases-workflow.md +44 -0
- package/template/.agents/skills/obsidian-clipper-template-creator/references/filters.md +51 -0
- package/template/.agents/skills/obsidian-clipper-template-creator/references/json-schema.md +77 -0
- package/template/.agents/skills/obsidian-clipper-template-creator/references/logic.md +67 -0
- package/template/.agents/skills/obsidian-clipper-template-creator/references/variables.md +64 -0
- package/template/.agents/skills/obsidian-markdown/SKILL.md +205 -0
- package/template/.agents/skills/obsidian-markdown/references/CALLOUTS.md +58 -0
- package/template/.agents/skills/obsidian-markdown/references/EMBEDS.md +63 -0
- package/template/.agents/skills/obsidian-markdown/references/PROPERTIES.md +61 -0
- package/template/.agents/skills/package-json-generator/SKILL.md +60 -0
- package/template/.agents/skills/package-json-generator/scripts/generate.js +120 -0
- package/template/.agents/skills/package-json-generator/scripts/run.sh +19 -0
- package/template/.agents/skills/parallel-agents/SKILL.md +144 -0
- package/template/.agents/skills/performance-optimization/SKILL.md +299 -0
- package/template/.agents/skills/performance-optimization/performance-checklist.md +113 -0
- package/template/.agents/skills/planning-and-task-breakdown/SKILL.md +239 -0
- package/template/.agents/skills/powershell-windows/SKILL.md +167 -0
- package/template/.agents/skills/pr/SKILL.md +93 -0
- package/template/.agents/skills/pr-review/SKILL.md +143 -0
- package/template/.agents/skills/pr-review-analysis/SKILL.md +89 -0
- package/template/.agents/skills/prd/SKILL.md +127 -0
- package/template/.agents/skills/preview/SKILL.md +121 -0
- package/template/.agents/skills/preview-local-check/SKILL.md +59 -0
- package/template/.agents/skills/prompt-addons/SKILL.md +99 -0
- package/template/.agents/skills/prototype/SKILL.md +44 -0
- package/template/.agents/skills/prp-dev-fastapi/SKILL.md +114 -0
- package/template/.agents/skills/prp-dev-multiplatform/SKILL.md +36 -0
- package/template/.agents/skills/prp-dev-odoo/SKILL.md +71 -0
- package/template/.agents/skills/prp-dev-php/SKILL.md +63 -0
- package/template/.agents/skills/prp-sa-ba/SKILL.md +52 -0
- package/template/.agents/skills/python-patterns/SKILL.md +441 -0
- package/template/.agents/skills/red-team-tactics/SKILL.md +199 -0
- package/template/.agents/skills/release-git-operations/SKILL.md +97 -0
- package/template/.agents/skills/research/SKILL.md +143 -0
- package/template/.agents/skills/review/SKILL.md +55 -0
- package/template/.agents/skills/review-followup-routing/SKILL.md +98 -0
- package/template/.agents/skills/roadmap-strategy/SKILL.md +97 -0
- package/template/.agents/skills/security-and-hardening/SKILL.md +349 -0
- package/template/.agents/skills/security-and-hardening/security-checklist.md +134 -0
- package/template/.agents/skills/security-review/SKILL.md +166 -0
- package/template/.agents/skills/seo-fundamentals/SKILL.md +129 -0
- package/template/.agents/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/template/.agents/skills/server-management/SKILL.md +161 -0
- package/template/.agents/skills/shipping-and-launch/SKILL.md +311 -0
- package/template/.agents/skills/silent-failure-audit/SKILL.md +73 -0
- package/template/.agents/skills/simplify/SKILL.md +79 -0
- package/template/.agents/skills/skill-development/SKILL.md +86 -0
- package/template/.agents/skills/spec-driven-development/SKILL.md +207 -0
- package/template/.agents/skills/spec-orchestration/SKILL.md +91 -0
- package/template/.agents/skills/specialist-agent-routing/SKILL.md +107 -0
- package/template/.agents/skills/tailwind-patterns/SKILL.md +269 -0
- package/template/.agents/skills/test/SKILL.md +82 -0
- package/template/.agents/skills/test-driven-development/SKILL.md +422 -0
- package/template/.agents/skills/test-driven-development/testing-patterns.md +236 -0
- package/template/.agents/skills/test-execution-and-coverage/SKILL.md +56 -0
- package/template/.agents/skills/type-design/SKILL.md +84 -0
- package/template/.agents/skills/ui-ux-pro-max/SKILL.md +75 -0
- package/template/.agents/skills/using-agent-skills/SKILL.md +171 -0
- package/template/.agents/skills/verification-orchestration/SKILL.md +68 -0
- package/template/.agents/skills/vulnerability-scanner/SKILL.md +276 -0
- package/template/.agents/skills/vulnerability-scanner/checklists.md +121 -0
- package/template/.agents/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/template/.agents/skills/wiki/SKILL.md +149 -0
- package/template/.agents/skills/workflow-documentation-sync/SKILL.md +87 -0
- package/template/.agents/skills/writing-great-skills/SKILL.md +65 -0
- package/template/.claude/skills/00-discover/SKILL.md +170 -0
- package/template/.claude/skills/10-define/SKILL.md +170 -0
- package/template/.claude/skills/20-spec/SKILL.md +156 -0
- package/template/.claude/skills/30-plan/SKILL.md +221 -0
- package/template/.claude/skills/40-implement/SKILL.md +166 -0
- package/template/.claude/skills/50-verify/SKILL.md +188 -0
- package/template/.claude/skills/60-report/SKILL.md +183 -0
- package/template/.claude/skills/70-release/SKILL.md +155 -0
- package/template/.claude/skills/9arm-skills/README.md +51 -0
- package/template/.claude/skills/9arm-skills/debug-mantra/SKILL.md +86 -0
- package/template/.claude/skills/9arm-skills/management-talk/SKILL.md +79 -0
- package/template/.claude/skills/9arm-skills/post-mortem/SKILL.md +71 -0
- package/template/.claude/skills/9arm-skills/scrutinize/SKILL.md +72 -0
- package/template/.claude/skills/agent/SKILL.md +165 -0
- package/template/.claude/skills/api-and-interface-design/SKILL.md +294 -0
- package/template/.claude/skills/app-builder/SKILL.md +75 -0
- package/template/.claude/skills/app-builder/agent-coordination.md +71 -0
- package/template/.claude/skills/app-builder/feature-building.md +53 -0
- package/template/.claude/skills/app-builder/project-detection.md +34 -0
- package/template/.claude/skills/app-builder/scaffolding.md +118 -0
- package/template/.claude/skills/app-builder/tech-stack.md +40 -0
- package/template/.claude/skills/app-builder/templates/SKILL.md +39 -0
- package/template/.claude/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/template/.claude/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/template/.claude/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/template/.claude/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/template/.claude/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/template/.claude/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/template/.claude/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/template/.claude/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
- package/template/.claude/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
- package/template/.claude/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
- package/template/.claude/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
- package/template/.claude/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/template/.claude/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
- package/template/.claude/skills/architecture/SKILL.md +55 -0
- package/template/.claude/skills/architecture/context-discovery.md +43 -0
- package/template/.claude/skills/architecture/examples.md +94 -0
- package/template/.claude/skills/architecture/pattern-selection.md +68 -0
- package/template/.claude/skills/architecture/patterns-reference.md +50 -0
- package/template/.claude/skills/architecture/trade-off-analysis.md +77 -0
- package/template/.claude/skills/bash-linux/SKILL.md +199 -0
- package/template/.claude/skills/behavioral-modes/SKILL.md +242 -0
- package/template/.claude/skills/brainstorm/SKILL.md +168 -0
- package/template/.claude/skills/browser-testing-with-devtools/SKILL.md +302 -0
- package/template/.claude/skills/changelog/SKILL.md +109 -0
- package/template/.claude/skills/check-for-updates/SKILL.md +117 -0
- package/template/.claude/skills/ci-cd-and-automation/SKILL.md +390 -0
- package/template/.claude/skills/code-review-and-quality/SKILL.md +392 -0
- package/template/.claude/skills/code-simplification/SKILL.md +331 -0
- package/template/.claude/skills/codebase-design/DEEPENING.md +24 -0
- package/template/.claude/skills/codebase-design/DESIGN-IT-TWICE.md +28 -0
- package/template/.claude/skills/codebase-design/SKILL.md +58 -0
- package/template/.claude/skills/commit/SKILL.md +63 -0
- package/template/.claude/skills/competitor-analysis/SKILL.md +66 -0
- package/template/.claude/skills/context-engineering/SKILL.md +290 -0
- package/template/.claude/skills/database-design/SKILL.md +52 -0
- package/template/.claude/skills/database-design/database-selection.md +43 -0
- package/template/.claude/skills/database-design/indexing.md +39 -0
- package/template/.claude/skills/database-design/migrations.md +48 -0
- package/template/.claude/skills/database-design/optimization.md +36 -0
- package/template/.claude/skills/database-design/orm-selection.md +30 -0
- package/template/.claude/skills/database-design/schema-design.md +56 -0
- package/template/.claude/skills/database-design/scripts/schema_validator.py +172 -0
- package/template/.claude/skills/debug/SKILL.md +131 -0
- package/template/.claude/skills/debugging-and-error-recovery/SKILL.md +298 -0
- package/template/.claude/skills/deploy/SKILL.md +91 -0
- package/template/.claude/skills/deployment-procedures/SKILL.md +241 -0
- package/template/.claude/skills/deprecation-and-migration/SKILL.md +206 -0
- package/template/.claude/skills/devflow/SKILL.md +89 -0
- package/template/.claude/skills/devflow-concept-intake/SKILL.md +150 -0
- package/template/.claude/skills/devflow-concept-intake/agents/openai.yaml +4 -0
- package/template/.claude/skills/devflow-concept-intake/references/adoption-proposal-template.md +60 -0
- package/template/.claude/skills/devflow-concept-intake/references/concept-report-template.md +47 -0
- package/template/.claude/skills/devflow-concept-intake/references/upstream-tracking-template.md +51 -0
- package/template/.claude/skills/devflow-wiki/SKILL.md +75 -0
- package/template/.claude/skills/diagnosing-bugs/SKILL.md +93 -0
- package/template/.claude/skills/documentation-and-adrs/SKILL.md +278 -0
- package/template/.claude/skills/domain-modeling/ADR-FORMAT.md +47 -0
- package/template/.claude/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/template/.claude/skills/domain-modeling/SKILL.md +74 -0
- package/template/.claude/skills/english-to-thai-translator/SKILL.md +125 -0
- package/template/.claude/skills/followup/SKILL.md +83 -0
- package/template/.claude/skills/frontend-ui-engineering/SKILL.md +326 -0
- package/template/.claude/skills/frontend-ui-engineering/accessibility-checklist.md +159 -0
- package/template/.claude/skills/git-workflow-and-versioning/SKILL.md +300 -0
- package/template/.claude/skills/goal/SKILL.md +148 -0
- package/template/.claude/skills/handoff/SKILL.md +46 -0
- package/template/.claude/skills/help/SKILL.md +253 -0
- package/template/.claude/skills/human-review-decisions/SKILL.md +74 -0
- package/template/.claude/skills/i18n-localization/SKILL.md +154 -0
- package/template/.claude/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/template/.claude/skills/idea-refine/SKILL.md +178 -0
- package/template/.claude/skills/idea-refine/examples.md +238 -0
- package/template/.claude/skills/idea-refine/frameworks.md +99 -0
- package/template/.claude/skills/idea-refine/refinement-criteria.md +113 -0
- package/template/.claude/skills/idea-refine/scripts/idea-refine.sh +15 -0
- package/template/.claude/skills/incremental-implementation/SKILL.md +248 -0
- package/template/.claude/skills/insight/SKILL.md +131 -0
- package/template/.claude/skills/insight-capture/SKILL.md +84 -0
- package/template/.claude/skills/intelligent-routing/SKILL.md +176 -0
- package/template/.claude/skills/issue-triage/SKILL.md +115 -0
- package/template/.claude/skills/lint-and-validate/SKILL.md +45 -0
- package/template/.claude/skills/lint-and-validate/scripts/lint_runner.py +184 -0
- package/template/.claude/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/template/.claude/skills/mcp-builder/SKILL.md +176 -0
- package/template/.claude/skills/md2html/SKILL.md +154 -0
- package/template/.claude/skills/md2html/components.md +505 -0
- package/template/.claude/skills/md2html/template.html +1152 -0
- package/template/.claude/skills/merge/SKILL.md +76 -0
- package/template/.claude/skills/mobile-design/SKILL.md +394 -0
- package/template/.claude/skills/mobile-design/decision-trees.md +516 -0
- package/template/.claude/skills/mobile-design/mobile-backend.md +491 -0
- package/template/.claude/skills/mobile-design/mobile-color-system.md +420 -0
- package/template/.claude/skills/mobile-design/mobile-debugging.md +122 -0
- package/template/.claude/skills/mobile-design/mobile-design-thinking.md +357 -0
- package/template/.claude/skills/mobile-design/mobile-navigation.md +458 -0
- package/template/.claude/skills/mobile-design/mobile-performance.md +767 -0
- package/template/.claude/skills/mobile-design/mobile-testing.md +356 -0
- package/template/.claude/skills/mobile-design/mobile-typography.md +433 -0
- package/template/.claude/skills/mobile-design/platform-android.md +666 -0
- package/template/.claude/skills/mobile-design/platform-ios.md +561 -0
- package/template/.claude/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/template/.claude/skills/mobile-design/touch-psychology.md +537 -0
- package/template/.claude/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -0
- package/template/.claude/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
- package/template/.claude/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
- package/template/.claude/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
- package/template/.claude/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
- package/template/.claude/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
- package/template/.claude/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
- package/template/.claude/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
- package/template/.claude/skills/nextjs-react-expert/SKILL.md +286 -0
- package/template/.claude/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/template/.claude/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/template/.claude/skills/nodejs-best-practices/SKILL.md +333 -0
- package/template/.claude/skills/obsidian-bases/SKILL.md +506 -0
- package/template/.claude/skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md +173 -0
- package/template/.claude/skills/obsidian-cli/SKILL.md +115 -0
- package/template/.claude/skills/obsidian-clipper-template-creator/SKILL.md +73 -0
- package/template/.claude/skills/obsidian-clipper-template-creator/assets/clipping-template.json +51 -0
- package/template/.claude/skills/obsidian-clipper-template-creator/assets/recipe-template.json +48 -0
- package/template/.claude/skills/obsidian-clipper-template-creator/references/analysis-workflow.md +79 -0
- package/template/.claude/skills/obsidian-clipper-template-creator/references/bases-workflow.md +44 -0
- package/template/.claude/skills/obsidian-clipper-template-creator/references/filters.md +51 -0
- package/template/.claude/skills/obsidian-clipper-template-creator/references/json-schema.md +77 -0
- package/template/.claude/skills/obsidian-clipper-template-creator/references/logic.md +67 -0
- package/template/.claude/skills/obsidian-clipper-template-creator/references/variables.md +64 -0
- package/template/.claude/skills/obsidian-markdown/SKILL.md +205 -0
- package/template/.claude/skills/obsidian-markdown/references/CALLOUTS.md +58 -0
- package/template/.claude/skills/obsidian-markdown/references/EMBEDS.md +63 -0
- package/template/.claude/skills/obsidian-markdown/references/PROPERTIES.md +61 -0
- package/template/.claude/skills/package-json-generator/SKILL.md +60 -0
- package/template/.claude/skills/package-json-generator/scripts/generate.js +120 -0
- package/template/.claude/skills/package-json-generator/scripts/run.sh +19 -0
- package/template/.claude/skills/parallel-agents/SKILL.md +144 -0
- package/template/.claude/skills/performance-optimization/SKILL.md +299 -0
- package/template/.claude/skills/performance-optimization/performance-checklist.md +113 -0
- package/template/.claude/skills/planning-and-task-breakdown/SKILL.md +239 -0
- package/template/.claude/skills/powershell-windows/SKILL.md +167 -0
- package/template/.claude/skills/pr/SKILL.md +93 -0
- package/template/.claude/skills/pr-review/SKILL.md +143 -0
- package/template/.claude/skills/pr-review-analysis/SKILL.md +89 -0
- package/template/.claude/skills/prd/SKILL.md +127 -0
- package/template/.claude/skills/preview/SKILL.md +121 -0
- package/template/.claude/skills/preview-local-check/SKILL.md +59 -0
- package/template/.claude/skills/prompt-addons/SKILL.md +99 -0
- package/template/.claude/skills/prototype/SKILL.md +44 -0
- package/template/.claude/skills/prp-dev-fastapi/SKILL.md +114 -0
- package/template/.claude/skills/prp-dev-multiplatform/SKILL.md +36 -0
- package/template/.claude/skills/prp-dev-odoo/SKILL.md +71 -0
- package/template/.claude/skills/prp-dev-php/SKILL.md +63 -0
- package/template/.claude/skills/prp-sa-ba/SKILL.md +52 -0
- package/template/.claude/skills/python-patterns/SKILL.md +441 -0
- package/template/.claude/skills/red-team-tactics/SKILL.md +199 -0
- package/template/.claude/skills/release-git-operations/SKILL.md +97 -0
- package/template/.claude/skills/research/SKILL.md +143 -0
- package/template/.claude/skills/review/SKILL.md +55 -0
- package/template/.claude/skills/review-followup-routing/SKILL.md +98 -0
- package/template/.claude/skills/roadmap-strategy/SKILL.md +97 -0
- package/template/.claude/skills/security-and-hardening/SKILL.md +349 -0
- package/template/.claude/skills/security-and-hardening/security-checklist.md +134 -0
- package/template/.claude/skills/security-review/SKILL.md +166 -0
- package/template/.claude/skills/seo-fundamentals/SKILL.md +129 -0
- package/template/.claude/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/template/.claude/skills/server-management/SKILL.md +161 -0
- package/template/.claude/skills/shipping-and-launch/SKILL.md +311 -0
- package/template/.claude/skills/silent-failure-audit/SKILL.md +73 -0
- package/template/.claude/skills/simplify/SKILL.md +79 -0
- package/template/.claude/skills/skill-development/SKILL.md +86 -0
- package/template/.claude/skills/spec-driven-development/SKILL.md +207 -0
- package/template/.claude/skills/spec-orchestration/SKILL.md +91 -0
- package/template/.claude/skills/specialist-agent-routing/SKILL.md +107 -0
- package/template/.claude/skills/tailwind-patterns/SKILL.md +269 -0
- package/template/.claude/skills/test/SKILL.md +82 -0
- package/template/.claude/skills/test-driven-development/SKILL.md +422 -0
- package/template/.claude/skills/test-driven-development/testing-patterns.md +236 -0
- package/template/.claude/skills/test-execution-and-coverage/SKILL.md +56 -0
- package/template/.claude/skills/type-design/SKILL.md +84 -0
- package/template/.claude/skills/ui-ux-pro-max/SKILL.md +75 -0
- package/template/.claude/skills/using-agent-skills/SKILL.md +171 -0
- package/template/.claude/skills/verification-orchestration/SKILL.md +68 -0
- package/template/.claude/skills/vulnerability-scanner/SKILL.md +276 -0
- package/template/.claude/skills/vulnerability-scanner/checklists.md +121 -0
- package/template/.claude/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/template/.claude/skills/wiki/SKILL.md +149 -0
- package/template/.claude/skills/workflow-documentation-sync/SKILL.md +87 -0
- package/template/.claude/skills/writing-great-skills/SKILL.md +65 -0
- package/template/.nexus/nexus-devflow.json +44 -0
- package/template/AGENTS.md +58 -0
- package/template/CLAUDE.md +5 -0
- package/template/LICENSE +21 -0
- package/template/devflow/context/ai-interaction.md +34 -0
- package/template/devflow/context/coding-standards.md +19 -0
- package/template/devflow/context/current-stage.md +6 -0
- package/template/devflow/context/findings.md +13 -0
- package/template/devflow/context/project-overview.md +20 -0
- package/template/devflow/reference/running-id-contract.md +39 -0
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-simplification
|
|
3
|
+
description: Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder to read, maintain, or extend than it should be. Use when reviewing code that has accumulated unnecessary complexity.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Code Simplification
|
|
7
|
+
|
|
8
|
+
> Inspired by Anthropic's Claude Code Simplifier plugin. Adapted here as a model-agnostic, process-driven skill for any AI coding agent.
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
Simplify code by reducing complexity while preserving exact behavior. The goal is not fewer lines — it's code that is easier to read, understand, modify, and debug. Every simplification must pass a simple test: "Would a new team member understand this faster than the original?"
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
- After a feature is working and tests pass, but the implementation feels heavier than it needs to be
|
|
17
|
+
- During code review when readability or complexity issues are flagged
|
|
18
|
+
- When you encounter deeply nested logic, long functions, or unclear names
|
|
19
|
+
- When refactoring code written under time pressure
|
|
20
|
+
- When consolidating related logic scattered across files
|
|
21
|
+
- After merging changes that introduced duplication or inconsistency
|
|
22
|
+
|
|
23
|
+
**When NOT to use:**
|
|
24
|
+
|
|
25
|
+
- Code is already clean and readable — don't simplify for the sake of it
|
|
26
|
+
- You don't understand what the code does yet — comprehend before you simplify
|
|
27
|
+
- The code is performance-critical and the "simpler" version would be measurably slower
|
|
28
|
+
- You're about to rewrite the module entirely — simplifying throwaway code wastes effort
|
|
29
|
+
|
|
30
|
+
## The Five Principles
|
|
31
|
+
|
|
32
|
+
### 1. Preserve Behavior Exactly
|
|
33
|
+
|
|
34
|
+
Don't change what the code does — only how it expresses it. All inputs, outputs, side effects, error behavior, and edge cases must remain identical. If you're not sure a simplification preserves behavior, don't make it.
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
ASK BEFORE EVERY CHANGE:
|
|
38
|
+
→ Does this produce the same output for every input?
|
|
39
|
+
→ Does this maintain the same error behavior?
|
|
40
|
+
→ Does this preserve the same side effects and ordering?
|
|
41
|
+
→ Do all existing tests still pass without modification?
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 2. Follow Project Conventions
|
|
45
|
+
|
|
46
|
+
Simplification means making code more consistent with the codebase, not imposing external preferences. Before simplifying:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
1. Read CLAUDE.md / project conventions
|
|
50
|
+
2. Study how neighboring code handles similar patterns
|
|
51
|
+
3. Match the project's style for:
|
|
52
|
+
- Import ordering and module system
|
|
53
|
+
- Function declaration style
|
|
54
|
+
- Naming conventions
|
|
55
|
+
- Error handling patterns
|
|
56
|
+
- Type annotation depth
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Simplification that breaks project consistency is not simplification — it's churn.
|
|
60
|
+
|
|
61
|
+
### 3. Prefer Clarity Over Cleverness
|
|
62
|
+
|
|
63
|
+
Explicit code is better than compact code when the compact version requires a mental pause to parse.
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
// UNCLEAR: Dense ternary chain
|
|
67
|
+
const label = isNew ? 'New' : isUpdated ? 'Updated' : isArchived ? 'Archived' : 'Active';
|
|
68
|
+
|
|
69
|
+
// CLEAR: Readable mapping
|
|
70
|
+
function getStatusLabel(item: Item): string {
|
|
71
|
+
if (item.isNew) return 'New';
|
|
72
|
+
if (item.isUpdated) return 'Updated';
|
|
73
|
+
if (item.isArchived) return 'Archived';
|
|
74
|
+
return 'Active';
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
// UNCLEAR: Chained reduces with inline logic
|
|
80
|
+
const result = items.reduce((acc, item) => ({
|
|
81
|
+
...acc,
|
|
82
|
+
[item.id]: { ...acc[item.id], count: (acc[item.id]?.count ?? 0) + 1 }
|
|
83
|
+
}), {});
|
|
84
|
+
|
|
85
|
+
// CLEAR: Named intermediate step
|
|
86
|
+
const countById = new Map<string, number>();
|
|
87
|
+
for (const item of items) {
|
|
88
|
+
countById.set(item.id, (countById.get(item.id) ?? 0) + 1);
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 4. Maintain Balance
|
|
93
|
+
|
|
94
|
+
Simplification has a failure mode: over-simplification. Watch for these traps:
|
|
95
|
+
|
|
96
|
+
- **Inlining too aggressively** — removing a helper that gave a concept a name makes the call site harder to read
|
|
97
|
+
- **Combining unrelated logic** — two simple functions merged into one complex function is not simpler
|
|
98
|
+
- **Removing "unnecessary" abstraction** — some abstractions exist for extensibility or testability, not complexity
|
|
99
|
+
- **Optimizing for line count** — fewer lines is not the goal; easier comprehension is
|
|
100
|
+
|
|
101
|
+
### 5. Scope to What Changed
|
|
102
|
+
|
|
103
|
+
Default to simplifying recently modified code. Avoid drive-by refactors of unrelated code unless explicitly asked to broaden scope. Unscoped simplification creates noise in diffs and risks unintended regressions.
|
|
104
|
+
|
|
105
|
+
## The Simplification Process
|
|
106
|
+
|
|
107
|
+
### Step 1: Understand Before Touching (Chesterton's Fence)
|
|
108
|
+
|
|
109
|
+
Before changing or removing anything, understand why it exists. This is Chesterton's Fence: if you see a fence across a road and don't understand why it's there, don't tear it down. First understand the reason, then decide if the reason still applies.
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
BEFORE SIMPLIFYING, ANSWER:
|
|
113
|
+
- What is this code's responsibility?
|
|
114
|
+
- What calls it? What does it call?
|
|
115
|
+
- What are the edge cases and error paths?
|
|
116
|
+
- Are there tests that define the expected behavior?
|
|
117
|
+
- Why might it have been written this way? (Performance? Platform constraint? Historical reason?)
|
|
118
|
+
- Check git blame: what was the original context for this code?
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
If you can't answer these, you're not ready to simplify. Read more context first.
|
|
122
|
+
|
|
123
|
+
### Step 2: Identify Simplification Opportunities
|
|
124
|
+
|
|
125
|
+
Scan for these patterns — each one is a concrete signal, not a vague smell:
|
|
126
|
+
|
|
127
|
+
**Structural complexity:**
|
|
128
|
+
|
|
129
|
+
| Pattern | Signal | Simplification |
|
|
130
|
+
|---------|--------|----------------|
|
|
131
|
+
| Deep nesting (3+ levels) | Hard to follow control flow | Extract conditions into guard clauses or helper functions |
|
|
132
|
+
| Long functions (50+ lines) | Multiple responsibilities | Split into focused functions with descriptive names |
|
|
133
|
+
| Nested ternaries | Requires mental stack to parse | Replace with if/else chains, switch, or lookup objects |
|
|
134
|
+
| Boolean parameter flags | `doThing(true, false, true)` | Replace with options objects or separate functions |
|
|
135
|
+
| Repeated conditionals | Same `if` check in multiple places | Extract to a well-named predicate function |
|
|
136
|
+
|
|
137
|
+
**Naming and readability:**
|
|
138
|
+
|
|
139
|
+
| Pattern | Signal | Simplification |
|
|
140
|
+
|---------|--------|----------------|
|
|
141
|
+
| Generic names | `data`, `result`, `temp`, `val`, `item` | Rename to describe the content: `userProfile`, `validationErrors` |
|
|
142
|
+
| Abbreviated names | `usr`, `cfg`, `btn`, `evt` | Use full words unless the abbreviation is universal (`id`, `url`, `api`) |
|
|
143
|
+
| Misleading names | Function named `get` that also mutates state | Rename to reflect actual behavior |
|
|
144
|
+
| Comments explaining "what" | `// increment counter` above `count++` | Delete the comment — the code is clear enough |
|
|
145
|
+
| Comments explaining "why" | `// Retry because the API is flaky under load` | Keep these — they carry intent the code can't express |
|
|
146
|
+
|
|
147
|
+
**Redundancy:**
|
|
148
|
+
|
|
149
|
+
| Pattern | Signal | Simplification |
|
|
150
|
+
|---------|--------|----------------|
|
|
151
|
+
| Duplicated logic | Same 5+ lines in multiple places | Extract to a shared function |
|
|
152
|
+
| Dead code | Unreachable branches, unused variables, commented-out blocks | Remove (after confirming it's truly dead) |
|
|
153
|
+
| Unnecessary abstractions | Wrapper that adds no value | Inline the wrapper, call the underlying function directly |
|
|
154
|
+
| Over-engineered patterns | Factory-for-a-factory, strategy-with-one-strategy | Replace with the simple direct approach |
|
|
155
|
+
| Redundant type assertions | Casting to a type that's already inferred | Remove the assertion |
|
|
156
|
+
|
|
157
|
+
### Step 3: Apply Changes Incrementally
|
|
158
|
+
|
|
159
|
+
Make one simplification at a time. Run tests after each change. **Submit refactoring changes separately from feature or bug fix changes.** A PR that refactors and adds a feature is two PRs — split them.
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
FOR EACH SIMPLIFICATION:
|
|
163
|
+
1. Make the change
|
|
164
|
+
2. Run the test suite
|
|
165
|
+
3. If tests pass → commit (or continue to next simplification)
|
|
166
|
+
4. If tests fail → revert and reconsider
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Avoid batching multiple simplifications into a single untested change. If something breaks, you need to know which simplification caused it.
|
|
170
|
+
|
|
171
|
+
**The Rule of 500:** If a refactoring would touch more than 500 lines, invest in automation (codemods, sed scripts, AST transforms) rather than making the changes by hand. Manual edits at that scale are error-prone and exhausting to review.
|
|
172
|
+
|
|
173
|
+
### Step 4: Verify the Result
|
|
174
|
+
|
|
175
|
+
After all simplifications, step back and evaluate the whole:
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
COMPARE BEFORE AND AFTER:
|
|
179
|
+
- Is the simplified version genuinely easier to understand?
|
|
180
|
+
- Did you introduce any new patterns inconsistent with the codebase?
|
|
181
|
+
- Is the diff clean and reviewable?
|
|
182
|
+
- Would a teammate approve this change?
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
If the "simplified" version is harder to understand or review, revert. Not every simplification attempt succeeds.
|
|
186
|
+
|
|
187
|
+
## Language-Specific Guidance
|
|
188
|
+
|
|
189
|
+
### TypeScript / JavaScript
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
// SIMPLIFY: Unnecessary async wrapper
|
|
193
|
+
// Before
|
|
194
|
+
async function getUser(id: string): Promise<User> {
|
|
195
|
+
return await userService.findById(id);
|
|
196
|
+
}
|
|
197
|
+
// After
|
|
198
|
+
function getUser(id: string): Promise<User> {
|
|
199
|
+
return userService.findById(id);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// SIMPLIFY: Verbose conditional assignment
|
|
203
|
+
// Before
|
|
204
|
+
let displayName: string;
|
|
205
|
+
if (user.nickname) {
|
|
206
|
+
displayName = user.nickname;
|
|
207
|
+
} else {
|
|
208
|
+
displayName = user.fullName;
|
|
209
|
+
}
|
|
210
|
+
// After
|
|
211
|
+
const displayName = user.nickname || user.fullName;
|
|
212
|
+
|
|
213
|
+
// SIMPLIFY: Manual array building
|
|
214
|
+
// Before
|
|
215
|
+
const activeUsers: User[] = [];
|
|
216
|
+
for (const user of users) {
|
|
217
|
+
if (user.isActive) {
|
|
218
|
+
activeUsers.push(user);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// After
|
|
222
|
+
const activeUsers = users.filter((user) => user.isActive);
|
|
223
|
+
|
|
224
|
+
// SIMPLIFY: Redundant boolean return
|
|
225
|
+
// Before
|
|
226
|
+
function isValid(input: string): boolean {
|
|
227
|
+
if (input.length > 0 && input.length < 100) {
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
// After
|
|
233
|
+
function isValid(input: string): boolean {
|
|
234
|
+
return input.length > 0 && input.length < 100;
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Python
|
|
239
|
+
|
|
240
|
+
```python
|
|
241
|
+
# SIMPLIFY: Verbose dictionary building
|
|
242
|
+
# Before
|
|
243
|
+
result = {}
|
|
244
|
+
for item in items:
|
|
245
|
+
result[item.id] = item.name
|
|
246
|
+
# After
|
|
247
|
+
result = {item.id: item.name for item in items}
|
|
248
|
+
|
|
249
|
+
# SIMPLIFY: Nested conditionals with early return
|
|
250
|
+
# Before
|
|
251
|
+
def process(data):
|
|
252
|
+
if data is not None:
|
|
253
|
+
if data.is_valid():
|
|
254
|
+
if data.has_permission():
|
|
255
|
+
return do_work(data)
|
|
256
|
+
else:
|
|
257
|
+
raise PermissionError("No permission")
|
|
258
|
+
else:
|
|
259
|
+
raise ValueError("Invalid data")
|
|
260
|
+
else:
|
|
261
|
+
raise TypeError("Data is None")
|
|
262
|
+
# After
|
|
263
|
+
def process(data):
|
|
264
|
+
if data is None:
|
|
265
|
+
raise TypeError("Data is None")
|
|
266
|
+
if not data.is_valid():
|
|
267
|
+
raise ValueError("Invalid data")
|
|
268
|
+
if not data.has_permission():
|
|
269
|
+
raise PermissionError("No permission")
|
|
270
|
+
return do_work(data)
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### React / JSX
|
|
274
|
+
|
|
275
|
+
```tsx
|
|
276
|
+
// SIMPLIFY: Verbose conditional rendering
|
|
277
|
+
// Before
|
|
278
|
+
function UserBadge({ user }: Props) {
|
|
279
|
+
if (user.isAdmin) {
|
|
280
|
+
return <Badge variant="admin">Admin</Badge>;
|
|
281
|
+
} else {
|
|
282
|
+
return <Badge variant="default">User</Badge>;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
// After
|
|
286
|
+
function UserBadge({ user }: Props) {
|
|
287
|
+
const variant = user.isAdmin ? 'admin' : 'default';
|
|
288
|
+
const label = user.isAdmin ? 'Admin' : 'User';
|
|
289
|
+
return <Badge variant={variant}>{label}</Badge>;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// SIMPLIFY: Prop drilling through intermediate components
|
|
293
|
+
// Before — consider whether context or composition solves this better.
|
|
294
|
+
// This is a judgment call — flag it, don't auto-refactor.
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
## Common Rationalizations
|
|
298
|
+
|
|
299
|
+
| Rationalization | Reality |
|
|
300
|
+
|---|---|
|
|
301
|
+
| "It's working, no need to touch it" | Working code that's hard to read will be hard to fix when it breaks. Simplifying now saves time on every future change. |
|
|
302
|
+
| "Fewer lines is always simpler" | A 1-line nested ternary is not simpler than a 5-line if/else. Simplicity is about comprehension speed, not line count. |
|
|
303
|
+
| "I'll just quickly simplify this unrelated code too" | Unscoped simplification creates noisy diffs and risks regressions in code you didn't intend to change. Stay focused. |
|
|
304
|
+
| "The types make it self-documenting" | Types document structure, not intent. A well-named function explains *why* better than a type signature explains *what*. |
|
|
305
|
+
| "This abstraction might be useful later" | Don't preserve speculative abstractions. If it's not used now, it's complexity without value. Remove it and re-add when needed. |
|
|
306
|
+
| "The original author must have had a reason" | Maybe. Check git blame — apply Chesterton's Fence. But accumulated complexity often has no reason; it's just the residue of iteration under pressure. |
|
|
307
|
+
| "I'll refactor while adding this feature" | Separate refactoring from feature work. Mixed changes are harder to review, revert, and understand in history. |
|
|
308
|
+
|
|
309
|
+
## Red Flags
|
|
310
|
+
|
|
311
|
+
- Simplification that requires modifying tests to pass (you likely changed behavior)
|
|
312
|
+
- "Simplified" code that is longer and harder to follow than the original
|
|
313
|
+
- Renaming things to match your preferences rather than project conventions
|
|
314
|
+
- Removing error handling because "it makes the code cleaner"
|
|
315
|
+
- Simplifying code you don't fully understand
|
|
316
|
+
- Batching many simplifications into one large, hard-to-review commit
|
|
317
|
+
- Refactoring code outside the scope of the current task without being asked
|
|
318
|
+
|
|
319
|
+
## Verification
|
|
320
|
+
|
|
321
|
+
After completing a simplification pass:
|
|
322
|
+
|
|
323
|
+
- [ ] All existing tests pass without modification
|
|
324
|
+
- [ ] Build succeeds with no new warnings
|
|
325
|
+
- [ ] Linter/formatter passes (no style regressions)
|
|
326
|
+
- [ ] Each simplification is a reviewable, incremental change
|
|
327
|
+
- [ ] The diff is clean — no unrelated changes mixed in
|
|
328
|
+
- [ ] Simplified code follows project conventions (checked against CLAUDE.md or equivalent)
|
|
329
|
+
- [ ] No error handling was removed or weakened
|
|
330
|
+
- [ ] No dead code was left behind (unused imports, unreachable branches)
|
|
331
|
+
- [ ] A teammate or review agent would approve the change as a net improvement
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Deepening
|
|
2
|
+
|
|
3
|
+
Use this reference when a cluster of shallow modules may need to become one deeper module.
|
|
4
|
+
|
|
5
|
+
## Dependency Categories
|
|
6
|
+
|
|
7
|
+
| Category | Meaning | Testing strategy |
|
|
8
|
+
| :--- | :--- | :--- |
|
|
9
|
+
| In-process | Pure computation or in-memory state | Test through the new interface directly. |
|
|
10
|
+
| Local-substitutable | Dependency has a local test stand-in | Test the deep module with the local stand-in. |
|
|
11
|
+
| Remote but owned | Internal service across a network boundary | Define a port at the seam; use production and in-memory adapters. |
|
|
12
|
+
| True external | Third-party service you do not control | Inject a port and use a mock adapter at the system boundary. |
|
|
13
|
+
|
|
14
|
+
## Seam Discipline
|
|
15
|
+
|
|
16
|
+
- One adapter means a hypothetical seam; two adapters means a real one.
|
|
17
|
+
- A deep module may have internal seams, but callers should not need to know them.
|
|
18
|
+
- Do not add ports only to make tests easier when the real design does not vary there.
|
|
19
|
+
|
|
20
|
+
## Testing Strategy
|
|
21
|
+
|
|
22
|
+
- Replace tests of shallow internals with tests at the deepened module's interface.
|
|
23
|
+
- Assert observable behavior through the interface.
|
|
24
|
+
- Keep tests resilient to internal refactors.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Design It Twice
|
|
2
|
+
|
|
3
|
+
Use this reference when a stage needs alternative module or interface designs before committing to one.
|
|
4
|
+
|
|
5
|
+
## Process
|
|
6
|
+
|
|
7
|
+
1. Frame the problem space.
|
|
8
|
+
- Name constraints.
|
|
9
|
+
- Name dependencies and classify them with `DEEPENING.md`.
|
|
10
|
+
- Sketch only enough code to make the constraints concrete.
|
|
11
|
+
|
|
12
|
+
2. Produce at least three different designs.
|
|
13
|
+
- Minimal interface: 1-3 entry points.
|
|
14
|
+
- Flexible interface: supports more use cases and extension.
|
|
15
|
+
- Common-case interface: makes the dominant caller trivial.
|
|
16
|
+
- Ports-and-adapters interface: use only when cross-seam dependencies justify it.
|
|
17
|
+
|
|
18
|
+
3. Compare designs.
|
|
19
|
+
- Interface depth.
|
|
20
|
+
- Locality of future change.
|
|
21
|
+
- Seam placement.
|
|
22
|
+
- Test surface.
|
|
23
|
+
- Adapter strategy.
|
|
24
|
+
|
|
25
|
+
4. Recommend one design.
|
|
26
|
+
- Be opinionated.
|
|
27
|
+
- Mention any useful hybrid.
|
|
28
|
+
- Record rejected alternatives only when future readers would otherwise re-open the same debate.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codebase-design
|
|
3
|
+
description: Shared vocabulary for designing deep modules. Use when a DevFlow stage needs module/interface design, seam placement, testability review, or architecture simplification.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Codebase Design
|
|
7
|
+
|
|
8
|
+
Use this support skill when `/20-Spec`, `/30-Plan`, `/40-Implement`, or `/50-Verify` needs better module shape.
|
|
9
|
+
|
|
10
|
+
Design deep modules: a lot of behavior behind a small interface, placed at a clean seam, and testable through that interface. The aim is leverage for callers, locality for maintainers, and behavior-focused tests.
|
|
11
|
+
|
|
12
|
+
## DevFlow Placement
|
|
13
|
+
|
|
14
|
+
- `/20-Spec`: use when requirements depend on a stable module or interface contract.
|
|
15
|
+
- `/30-Plan`: use when planning needs file-level architecture, seams, or dependency strategy.
|
|
16
|
+
- `/40-Implement`: use when implementation reveals shallow modules or awkward test seams.
|
|
17
|
+
- `/50-Verify`: use when review finds code that is hard to test, hard to change, or too spread out.
|
|
18
|
+
|
|
19
|
+
## Vocabulary
|
|
20
|
+
|
|
21
|
+
Use these words consistently:
|
|
22
|
+
|
|
23
|
+
- **Module**: anything with an interface and an implementation.
|
|
24
|
+
- **Interface**: everything a caller must know to use the module correctly, including invariants, ordering constraints, error modes, configuration, and performance characteristics.
|
|
25
|
+
- **Implementation**: what sits inside the module.
|
|
26
|
+
- **Depth**: leverage at the interface. A module is deep when a large amount of behavior sits behind a small interface.
|
|
27
|
+
- **Seam**: a place where behavior can change without editing the caller.
|
|
28
|
+
- **Adapter**: a concrete thing that satisfies an interface at a seam.
|
|
29
|
+
- **Leverage**: capability callers get per unit of interface they learn.
|
|
30
|
+
- **Locality**: how much change, debugging, and verification concentrate in one place.
|
|
31
|
+
|
|
32
|
+
## Principles
|
|
33
|
+
|
|
34
|
+
- Depth is a property of the interface, not line count.
|
|
35
|
+
- The interface is the test surface.
|
|
36
|
+
- One adapter means a hypothetical seam; two adapters means a real one.
|
|
37
|
+
- Do not expose internal seams through the public interface just because tests use them.
|
|
38
|
+
- If deleting a module removes no complexity, it is probably a pass-through.
|
|
39
|
+
|
|
40
|
+
## Process
|
|
41
|
+
|
|
42
|
+
1. Identify the module, callers, and behavior the active stage is trying to stabilize.
|
|
43
|
+
2. Name the current interface, implementation, seams, and adapters.
|
|
44
|
+
3. Ask whether the interface is smaller than the behavior it unlocks.
|
|
45
|
+
4. Classify dependencies using `DEEPENING.md` when a module needs restructuring.
|
|
46
|
+
5. Use `DESIGN-IT-TWICE.md` when multiple viable interface shapes exist.
|
|
47
|
+
6. Record the result in the owning stage artifact. Use ADRs only for hard-to-reverse decisions.
|
|
48
|
+
|
|
49
|
+
## Output
|
|
50
|
+
|
|
51
|
+
Return:
|
|
52
|
+
|
|
53
|
+
- current module/interface shape
|
|
54
|
+
- proposed seam or interface change
|
|
55
|
+
- dependency strategy
|
|
56
|
+
- test surface
|
|
57
|
+
- risks and rejected alternatives
|
|
58
|
+
- recommended owning DevFlow stage
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---name: commit
|
|
2
|
+
|
|
3
|
+
description: Smart Commit (Git Orchestration) - Stage files intelligently and write a concise, imperative commit message according to project standards.
|
|
4
|
+
---
|
|
5
|
+
# ๐’พ Smart Commit (Git Orchestration)
|
|
6
|
+
|
|
7
|
+
## Target: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Stage files intelligently and write a concise, imperative commit message according to project standards.
|
|
10
|
+
|
|
11
|
+
Primary behavior now lives in:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
.agents/skills/release-git-operations/SKILL.md
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Treat this workflow file as a compatibility wrapper around that skill in `commit` mode.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## ๐ ๏ธ Internal Process
|
|
22
|
+
|
|
23
|
+
You are an orchestrator. Your goal is to call the specialized Git Committer agent to perform a high-quality commit.
|
|
24
|
+
|
|
25
|
+
### Phase 1: Assessment & Staging
|
|
26
|
+
**Call Agent**: `prp-core-git-committer`
|
|
27
|
+
- Provide the target description (e.g., "all", "backend only", "staged").
|
|
28
|
+
- The agent will:
|
|
29
|
+
- Check the current Git status and branch.
|
|
30
|
+
- **MANDATORY BRANCH RULE:** Use the user's current branch as-is. Do not create, switch, or checkout a branch automatically. Only create or switch branches when the user explicitly asks for that exact branch action in the current request.
|
|
31
|
+
- If the current branch appears risky for the intended commit (for example `main`/`master` or a protected branch), warn the user and ask whether they want to continue on the current branch or explicitly create/switch to another branch.
|
|
32
|
+
- Interpret your description to stage the correct files.
|
|
33
|
+
- Review the staged changes to understand the context.
|
|
34
|
+
|
|
35
|
+
### Phase 2: Message Generation & Commit
|
|
36
|
+
- Ensure the agent generates an imperative commit message (e.g., `feat: Add user auth`).
|
|
37
|
+
- The agent will execute the commit and capture the result.
|
|
38
|
+
|
|
39
|
+
### Phase 3: Result Summary
|
|
40
|
+
- Verify the agent reports:
|
|
41
|
+
- Commit Hash.
|
|
42
|
+
- Final Commit Message.
|
|
43
|
+
- Statistics (Files changed, additions, deletions).
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
๐“ **Next Step**: Run `PR` to create a Pull Request.
|
|
48
|
+
|
|
49
|
+
## Relationship To DevFlow 2.0
|
|
50
|
+
|
|
51
|
+
- Classification: Companion command
|
|
52
|
+
- Mainline status: Release support command, not a numbered stage
|
|
53
|
+
- Typical entry points: `/70-Release` after the report is aligned and release execution is ready
|
|
54
|
+
- Typical handoff targets: `PR`, `Deploy`, `/70-Release`
|
|
55
|
+
|
|
56
|
+
## Sources
|
|
57
|
+
|
|
58
|
+
- `AGENTS.md`
|
|
59
|
+
- `.agents/skills/release-git-operations/SKILL.md`
|
|
60
|
+
- `.agents/skills/git-workflow-and-versioning/SKILL.md`
|
|
61
|
+
- Related commands: `/70-Release`, `PR`, `Deploy`, `Merge`
|
|
62
|
+
|
|
63
|
+
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: competitor-analysis
|
|
3
|
+
description: Research competitors, market alternatives, user pain points, and differentiation opportunities. Use when product framing, roadmap decisions, or strategic positioning need source-backed external context.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Competitor Analysis
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
This skill gathers market context and converts it into usable product insight for PRD, Define, Spec, or Roadmap work.
|
|
11
|
+
|
|
12
|
+
## When to Use
|
|
13
|
+
|
|
14
|
+
- The team needs to understand competitors or substitutes
|
|
15
|
+
- Product framing needs real external context
|
|
16
|
+
- Roadmap decisions need evidence about gaps or opportunities
|
|
17
|
+
- A feature idea needs differentiation, not just implementation detail
|
|
18
|
+
|
|
19
|
+
## Process
|
|
20
|
+
|
|
21
|
+
### 1. Load Product Context
|
|
22
|
+
|
|
23
|
+
- read the user request, PRD, Define, Spec, or Roadmap context
|
|
24
|
+
- identify target users, use case, and known alternatives
|
|
25
|
+
|
|
26
|
+
### 2. Gather Evidence
|
|
27
|
+
|
|
28
|
+
- find direct and indirect competitors
|
|
29
|
+
- inspect public docs, reviews, forums, comparisons, issue trackers, and discussion surfaces when available
|
|
30
|
+
- cite sources and separate evidence from inference
|
|
31
|
+
|
|
32
|
+
### 3. Analyze Opportunities
|
|
33
|
+
|
|
34
|
+
For each competitor or market segment, summarize:
|
|
35
|
+
|
|
36
|
+
- positioning
|
|
37
|
+
- strengths
|
|
38
|
+
- recurring pain points
|
|
39
|
+
- opportunity for the current project
|
|
40
|
+
|
|
41
|
+
### 4. Produce Reusable Output
|
|
42
|
+
|
|
43
|
+
If the result is reusable, write it under:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
devflow/research/{date}-{slug}-competitor-analysis.md
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Use `.agent/resources/schemas/competitor_analysis.template.md` when saving a reusable report.
|
|
50
|
+
|
|
51
|
+
### 5. Route Back
|
|
52
|
+
|
|
53
|
+
- `PRD` for product framing
|
|
54
|
+
- `/10-Define` for scope and decision shaping
|
|
55
|
+
- `Roadmap` for prioritization
|
|
56
|
+
- `/20-Spec` when a selected opportunity becomes actionable
|
|
57
|
+
|
|
58
|
+
## Output
|
|
59
|
+
|
|
60
|
+
Return:
|
|
61
|
+
|
|
62
|
+
- competitors researched
|
|
63
|
+
- market gaps
|
|
64
|
+
- evidence-backed opportunities
|
|
65
|
+
- source links
|
|
66
|
+
- recommended return stage or command
|