scm-method 1.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/.claude-plugin/marketplace.json +77 -0
- package/AGENTS.md +12 -0
- package/LICENSE +30 -0
- package/README.md +109 -0
- package/README_CN.md +108 -0
- package/package.json +110 -0
- package/src/bmm-skills/1-analysis/research/scm-domain-research/SKILL.md +6 -0
- package/src/bmm-skills/1-analysis/research/scm-domain-research/domain-steps/step-01-init.md +137 -0
- package/src/bmm-skills/1-analysis/research/scm-domain-research/domain-steps/step-02-domain-analysis.md +229 -0
- package/src/bmm-skills/1-analysis/research/scm-domain-research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/src/bmm-skills/1-analysis/research/scm-domain-research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/src/bmm-skills/1-analysis/research/scm-domain-research/domain-steps/step-05-technical-trends.md +234 -0
- package/src/bmm-skills/1-analysis/research/scm-domain-research/domain-steps/step-06-research-synthesis.md +444 -0
- package/src/bmm-skills/1-analysis/research/scm-domain-research/research.template.md +29 -0
- package/src/bmm-skills/1-analysis/research/scm-domain-research/workflow.md +51 -0
- package/src/bmm-skills/1-analysis/research/scm-market-research/SKILL.md +6 -0
- package/src/bmm-skills/1-analysis/research/scm-market-research/research.template.md +29 -0
- package/src/bmm-skills/1-analysis/research/scm-market-research/steps/step-01-init.md +184 -0
- package/src/bmm-skills/1-analysis/research/scm-market-research/steps/step-02-customer-behavior.md +239 -0
- package/src/bmm-skills/1-analysis/research/scm-market-research/steps/step-03-customer-pain-points.md +251 -0
- package/src/bmm-skills/1-analysis/research/scm-market-research/steps/step-04-customer-decisions.md +261 -0
- package/src/bmm-skills/1-analysis/research/scm-market-research/steps/step-05-competitive-analysis.md +173 -0
- package/src/bmm-skills/1-analysis/research/scm-market-research/steps/step-06-research-completion.md +478 -0
- package/src/bmm-skills/1-analysis/research/scm-market-research/workflow.md +51 -0
- package/src/bmm-skills/1-analysis/research/scm-technical-research/SKILL.md +6 -0
- package/src/bmm-skills/1-analysis/research/scm-technical-research/research.template.md +29 -0
- package/src/bmm-skills/1-analysis/research/scm-technical-research/technical-steps/step-01-init.md +137 -0
- package/src/bmm-skills/1-analysis/research/scm-technical-research/technical-steps/step-02-technical-overview.md +239 -0
- package/src/bmm-skills/1-analysis/research/scm-technical-research/technical-steps/step-03-integration-patterns.md +248 -0
- package/src/bmm-skills/1-analysis/research/scm-technical-research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/src/bmm-skills/1-analysis/research/scm-technical-research/technical-steps/step-05-implementation-research.md +233 -0
- package/src/bmm-skills/1-analysis/research/scm-technical-research/technical-steps/step-06-research-synthesis.md +487 -0
- package/src/bmm-skills/1-analysis/research/scm-technical-research/workflow.md +52 -0
- package/src/bmm-skills/1-analysis/scm-agent-analyst/SKILL.md +59 -0
- package/src/bmm-skills/1-analysis/scm-agent-analyst/scm-skill-manifest.yaml +11 -0
- package/src/bmm-skills/1-analysis/scm-agent-tech-writer/SKILL.md +57 -0
- package/src/bmm-skills/1-analysis/scm-agent-tech-writer/explain-concept.md +20 -0
- package/src/bmm-skills/1-analysis/scm-agent-tech-writer/mermaid-gen.md +20 -0
- package/src/bmm-skills/1-analysis/scm-agent-tech-writer/scm-skill-manifest.yaml +11 -0
- package/src/bmm-skills/1-analysis/scm-agent-tech-writer/validate-doc.md +19 -0
- package/src/bmm-skills/1-analysis/scm-agent-tech-writer/write-document.md +20 -0
- package/src/bmm-skills/1-analysis/scm-document-project/SKILL.md +6 -0
- package/src/bmm-skills/1-analysis/scm-document-project/checklist.md +245 -0
- package/src/bmm-skills/1-analysis/scm-document-project/documentation-requirements.csv +12 -0
- package/src/bmm-skills/1-analysis/scm-document-project/instructions.md +128 -0
- package/src/bmm-skills/1-analysis/scm-document-project/templates/deep-dive-template.md +345 -0
- package/src/bmm-skills/1-analysis/scm-document-project/templates/index-template.md +169 -0
- package/src/bmm-skills/1-analysis/scm-document-project/templates/project-overview-template.md +103 -0
- package/src/bmm-skills/1-analysis/scm-document-project/templates/project-scan-report-schema.json +160 -0
- package/src/bmm-skills/1-analysis/scm-document-project/templates/source-tree-template.md +135 -0
- package/src/bmm-skills/1-analysis/scm-document-project/workflow.md +25 -0
- package/src/bmm-skills/1-analysis/scm-document-project/workflows/deep-dive-instructions.md +299 -0
- package/src/bmm-skills/1-analysis/scm-document-project/workflows/deep-dive-workflow.md +34 -0
- package/src/bmm-skills/1-analysis/scm-document-project/workflows/full-scan-instructions.md +1107 -0
- package/src/bmm-skills/1-analysis/scm-document-project/workflows/full-scan-workflow.md +34 -0
- package/src/bmm-skills/1-analysis/scm-prfaq/SKILL.md +96 -0
- package/src/bmm-skills/1-analysis/scm-prfaq/agents/artifact-analyzer.md +60 -0
- package/src/bmm-skills/1-analysis/scm-prfaq/agents/web-researcher.md +49 -0
- package/src/bmm-skills/1-analysis/scm-prfaq/assets/prfaq-template.md +62 -0
- package/src/bmm-skills/1-analysis/scm-prfaq/references/customer-faq.md +55 -0
- package/src/bmm-skills/1-analysis/scm-prfaq/references/internal-faq.md +51 -0
- package/src/bmm-skills/1-analysis/scm-prfaq/references/press-release.md +60 -0
- package/src/bmm-skills/1-analysis/scm-prfaq/references/verdict.md +79 -0
- package/src/bmm-skills/1-analysis/scm-prfaq/scm-manifest.json +16 -0
- package/src/bmm-skills/1-analysis/scm-product-brief/SKILL.md +82 -0
- package/src/bmm-skills/1-analysis/scm-product-brief/agents/artifact-analyzer.md +60 -0
- package/src/bmm-skills/1-analysis/scm-product-brief/agents/opportunity-reviewer.md +44 -0
- package/src/bmm-skills/1-analysis/scm-product-brief/agents/skeptic-reviewer.md +44 -0
- package/src/bmm-skills/1-analysis/scm-product-brief/agents/web-researcher.md +49 -0
- package/src/bmm-skills/1-analysis/scm-product-brief/prompts/contextual-discovery.md +57 -0
- package/src/bmm-skills/1-analysis/scm-product-brief/prompts/draft-and-review.md +86 -0
- package/src/bmm-skills/1-analysis/scm-product-brief/prompts/finalize.md +75 -0
- package/src/bmm-skills/1-analysis/scm-product-brief/prompts/guided-elicitation.md +70 -0
- package/src/bmm-skills/1-analysis/scm-product-brief/resources/brief-template.md +60 -0
- package/src/bmm-skills/1-analysis/scm-product-brief/scm-manifest.json +17 -0
- package/src/bmm-skills/2-plan-workflows/scm-agent-pm/SKILL.md +59 -0
- package/src/bmm-skills/2-plan-workflows/scm-agent-pm/scm-skill-manifest.yaml +11 -0
- package/src/bmm-skills/2-plan-workflows/scm-agent-ux-designer/SKILL.md +55 -0
- package/src/bmm-skills/2-plan-workflows/scm-agent-ux-designer/scm-skill-manifest.yaml +11 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/SKILL.md +6 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/data/domain-complexity.csv +15 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/data/prd-purpose.md +197 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/data/project-types.csv +11 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-01-init.md +178 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-01b-continue.md +161 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-02-discovery.md +208 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-02b-vision.md +142 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-02c-executive-summary.md +158 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-03-success.md +214 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-04-journeys.md +201 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-05-domain.md +194 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-06-innovation.md +211 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-07-project-type.md +222 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-08-scoping.md +216 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-09-functional.md +219 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-10-nonfunctional.md +230 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-11-polish.md +221 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/steps-c/step-12-complete.md +115 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/templates/prd-template.md +10 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-prd/workflow.md +61 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/SKILL.md +6 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-01-init.md +135 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-01b-continue.md +127 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-02-discovery.md +190 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-03-core-experience.md +217 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-04-emotional-response.md +220 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-05-inspiration.md +235 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-06-design-system.md +253 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-07-defining-experience.md +255 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-08-visual-foundation.md +225 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-09-design-directions.md +225 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-10-user-journeys.md +242 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-11-component-strategy.md +249 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-12-ux-patterns.md +238 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-13-responsive-accessibility.md +265 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/steps/step-14-complete.md +171 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/ux-design-template.md +13 -0
- package/src/bmm-skills/2-plan-workflows/scm-create-ux-design/workflow.md +35 -0
- package/src/bmm-skills/2-plan-workflows/scm-edit-prd/SKILL.md +6 -0
- package/src/bmm-skills/2-plan-workflows/scm-edit-prd/steps-e/step-e-01-discovery.md +242 -0
- package/src/bmm-skills/2-plan-workflows/scm-edit-prd/steps-e/step-e-01b-legacy-conversion.md +204 -0
- package/src/bmm-skills/2-plan-workflows/scm-edit-prd/steps-e/step-e-02-review.md +245 -0
- package/src/bmm-skills/2-plan-workflows/scm-edit-prd/steps-e/step-e-03-edit.md +250 -0
- package/src/bmm-skills/2-plan-workflows/scm-edit-prd/steps-e/step-e-04-complete.md +165 -0
- package/src/bmm-skills/2-plan-workflows/scm-edit-prd/workflow.md +62 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/SKILL.md +6 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/data/domain-complexity.csv +15 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/data/prd-purpose.md +197 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/data/project-types.csv +11 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-01-discovery.md +221 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-02-format-detection.md +188 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-02b-parity-check.md +206 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-03-density-validation.md +171 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +211 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-05-measurability-validation.md +225 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-06-traceability-validation.md +214 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +202 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +240 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-09-project-type-validation.md +260 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-10-smart-validation.md +206 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +261 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-12-completeness-validation.md +239 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/steps-v/step-v-13-report-complete.md +229 -0
- package/src/bmm-skills/2-plan-workflows/scm-validate-prd/workflow.md +61 -0
- package/src/bmm-skills/3-solutioning/scm-agent-architect/SKILL.md +54 -0
- package/src/bmm-skills/3-solutioning/scm-agent-architect/scm-skill-manifest.yaml +11 -0
- package/src/bmm-skills/3-solutioning/scm-check-implementation-readiness/SKILL.md +6 -0
- package/src/bmm-skills/3-solutioning/scm-check-implementation-readiness/steps/step-01-document-discovery.md +179 -0
- package/src/bmm-skills/3-solutioning/scm-check-implementation-readiness/steps/step-02-prd-analysis.md +168 -0
- package/src/bmm-skills/3-solutioning/scm-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +169 -0
- package/src/bmm-skills/3-solutioning/scm-check-implementation-readiness/steps/step-04-ux-alignment.md +129 -0
- package/src/bmm-skills/3-solutioning/scm-check-implementation-readiness/steps/step-05-epic-quality-review.md +241 -0
- package/src/bmm-skills/3-solutioning/scm-check-implementation-readiness/steps/step-06-final-assessment.md +126 -0
- package/src/bmm-skills/3-solutioning/scm-check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/src/bmm-skills/3-solutioning/scm-check-implementation-readiness/workflow.md +47 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/SKILL.md +6 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/architecture-decision-template.md +12 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/data/domain-complexity.csv +13 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/data/project-types.csv +7 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/steps/step-01-init.md +153 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/steps/step-01b-continue.md +173 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/steps/step-02-context.md +224 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/steps/step-03-starter.md +329 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/steps/step-04-decisions.md +318 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/steps/step-05-patterns.md +359 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/steps/step-06-structure.md +379 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/steps/step-07-validation.md +359 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/steps/step-08-complete.md +76 -0
- package/src/bmm-skills/3-solutioning/scm-create-architecture/workflow.md +32 -0
- package/src/bmm-skills/3-solutioning/scm-create-epics-and-stories/SKILL.md +6 -0
- package/src/bmm-skills/3-solutioning/scm-create-epics-and-stories/steps/step-01-validate-prerequisites.md +255 -0
- package/src/bmm-skills/3-solutioning/scm-create-epics-and-stories/steps/step-02-design-epics.md +212 -0
- package/src/bmm-skills/3-solutioning/scm-create-epics-and-stories/steps/step-03-create-stories.md +255 -0
- package/src/bmm-skills/3-solutioning/scm-create-epics-and-stories/steps/step-04-final-validation.md +131 -0
- package/src/bmm-skills/3-solutioning/scm-create-epics-and-stories/templates/epics-template.md +61 -0
- package/src/bmm-skills/3-solutioning/scm-create-epics-and-stories/workflow.md +51 -0
- package/src/bmm-skills/3-solutioning/scm-generate-project-context/SKILL.md +6 -0
- package/src/bmm-skills/3-solutioning/scm-generate-project-context/project-context-template.md +21 -0
- package/src/bmm-skills/3-solutioning/scm-generate-project-context/steps/step-01-discover.md +186 -0
- package/src/bmm-skills/3-solutioning/scm-generate-project-context/steps/step-02-generate.md +321 -0
- package/src/bmm-skills/3-solutioning/scm-generate-project-context/steps/step-03-complete.md +278 -0
- package/src/bmm-skills/3-solutioning/scm-generate-project-context/workflow.md +39 -0
- package/src/bmm-skills/4-implementation/scm-agent-dev/SKILL.md +64 -0
- package/src/bmm-skills/4-implementation/scm-agent-dev/scm-skill-manifest.yaml +11 -0
- package/src/bmm-skills/4-implementation/scm-agent-qa/SKILL.md +61 -0
- package/src/bmm-skills/4-implementation/scm-agent-qa/scm-skill-manifest.yaml +11 -0
- package/src/bmm-skills/4-implementation/scm-agent-quick-flow-solo-dev/SKILL.md +53 -0
- package/src/bmm-skills/4-implementation/scm-agent-quick-flow-solo-dev/scm-skill-manifest.yaml +11 -0
- package/src/bmm-skills/4-implementation/scm-agent-sm/SKILL.md +55 -0
- package/src/bmm-skills/4-implementation/scm-agent-sm/scm-skill-manifest.yaml +11 -0
- package/src/bmm-skills/4-implementation/scm-code-review/SKILL.md +6 -0
- package/src/bmm-skills/4-implementation/scm-code-review/steps/step-01-gather-context.md +62 -0
- package/src/bmm-skills/4-implementation/scm-code-review/steps/step-02-review.md +34 -0
- package/src/bmm-skills/4-implementation/scm-code-review/steps/step-03-triage.md +49 -0
- package/src/bmm-skills/4-implementation/scm-code-review/steps/step-04-present.md +129 -0
- package/src/bmm-skills/4-implementation/scm-code-review/workflow.md +55 -0
- package/src/bmm-skills/4-implementation/scm-correct-course/SKILL.md +6 -0
- package/src/bmm-skills/4-implementation/scm-correct-course/checklist.md +288 -0
- package/src/bmm-skills/4-implementation/scm-correct-course/workflow.md +267 -0
- package/src/bmm-skills/4-implementation/scm-create-story/SKILL.md +6 -0
- package/src/bmm-skills/4-implementation/scm-create-story/checklist.md +357 -0
- package/src/bmm-skills/4-implementation/scm-create-story/discover-inputs.md +88 -0
- package/src/bmm-skills/4-implementation/scm-create-story/template.md +49 -0
- package/src/bmm-skills/4-implementation/scm-create-story/workflow.md +380 -0
- package/src/bmm-skills/4-implementation/scm-dev-story/SKILL.md +6 -0
- package/src/bmm-skills/4-implementation/scm-dev-story/checklist.md +80 -0
- package/src/bmm-skills/4-implementation/scm-dev-story/workflow.md +450 -0
- package/src/bmm-skills/4-implementation/scm-qa-generate-e2e-tests/SKILL.md +6 -0
- package/src/bmm-skills/4-implementation/scm-qa-generate-e2e-tests/checklist.md +33 -0
- package/src/bmm-skills/4-implementation/scm-qa-generate-e2e-tests/workflow.md +136 -0
- package/src/bmm-skills/4-implementation/scm-quick-dev/SKILL.md +6 -0
- package/src/bmm-skills/4-implementation/scm-quick-dev/spec-template.md +88 -0
- package/src/bmm-skills/4-implementation/scm-quick-dev/step-01-clarify-and-route.md +66 -0
- package/src/bmm-skills/4-implementation/scm-quick-dev/step-02-plan.md +35 -0
- package/src/bmm-skills/4-implementation/scm-quick-dev/step-03-implement.md +37 -0
- package/src/bmm-skills/4-implementation/scm-quick-dev/step-04-review.md +49 -0
- package/src/bmm-skills/4-implementation/scm-quick-dev/step-05-present.md +63 -0
- package/src/bmm-skills/4-implementation/scm-quick-dev/step-oneshot.md +62 -0
- package/src/bmm-skills/4-implementation/scm-quick-dev/workflow.md +79 -0
- package/src/bmm-skills/4-implementation/scm-retrospective/SKILL.md +6 -0
- package/src/bmm-skills/4-implementation/scm-retrospective/workflow.md +1479 -0
- package/src/bmm-skills/4-implementation/scm-sprint-planning/SKILL.md +6 -0
- package/src/bmm-skills/4-implementation/scm-sprint-planning/checklist.md +33 -0
- package/src/bmm-skills/4-implementation/scm-sprint-planning/sprint-status-template.yaml +56 -0
- package/src/bmm-skills/4-implementation/scm-sprint-planning/workflow.md +263 -0
- package/src/bmm-skills/4-implementation/scm-sprint-status/SKILL.md +6 -0
- package/src/bmm-skills/4-implementation/scm-sprint-status/workflow.md +261 -0
- package/src/bmm-skills/module-help.csv +31 -0
- package/src/bmm-skills/module.yaml +50 -0
- package/src/core-skills/module-help.csv +11 -0
- package/src/core-skills/module.yaml +25 -0
- package/src/core-skills/scm-advanced-elicitation/SKILL.md +136 -0
- package/src/core-skills/scm-advanced-elicitation/methods.csv +51 -0
- package/src/core-skills/scm-brainstorming/SKILL.md +6 -0
- package/src/core-skills/scm-brainstorming/brain-methods.csv +62 -0
- package/src/core-skills/scm-brainstorming/steps/step-01-session-setup.md +214 -0
- package/src/core-skills/scm-brainstorming/steps/step-01b-continue.md +124 -0
- package/src/core-skills/scm-brainstorming/steps/step-02a-user-selected.md +229 -0
- package/src/core-skills/scm-brainstorming/steps/step-02b-ai-recommended.md +239 -0
- package/src/core-skills/scm-brainstorming/steps/step-02c-random-selection.md +211 -0
- package/src/core-skills/scm-brainstorming/steps/step-02d-progressive-flow.md +266 -0
- package/src/core-skills/scm-brainstorming/steps/step-03-technique-execution.md +401 -0
- package/src/core-skills/scm-brainstorming/steps/step-04-idea-organization.md +305 -0
- package/src/core-skills/scm-brainstorming/template.md +15 -0
- package/src/core-skills/scm-brainstorming/workflow.md +53 -0
- package/src/core-skills/scm-distillator/SKILL.md +177 -0
- package/src/core-skills/scm-distillator/agents/distillate-compressor.md +116 -0
- package/src/core-skills/scm-distillator/agents/round-trip-reconstructor.md +68 -0
- package/src/core-skills/scm-distillator/resources/compression-rules.md +51 -0
- package/src/core-skills/scm-distillator/resources/distillate-format-reference.md +227 -0
- package/src/core-skills/scm-distillator/resources/splitting-strategy.md +78 -0
- package/src/core-skills/scm-distillator/scripts/analyze_sources.py +300 -0
- package/src/core-skills/scm-distillator/scripts/tests/test_analyze_sources.py +204 -0
- package/src/core-skills/scm-editorial-review-prose/SKILL.md +86 -0
- package/src/core-skills/scm-editorial-review-structure/SKILL.md +179 -0
- package/src/core-skills/scm-help/SKILL.md +73 -0
- package/src/core-skills/scm-index-docs/SKILL.md +66 -0
- package/src/core-skills/scm-party-mode/SKILL.md +125 -0
- package/src/core-skills/scm-review-adversarial-general/SKILL.md +37 -0
- package/src/core-skills/scm-review-edge-case-hunter/SKILL.md +67 -0
- package/src/core-skills/scm-shard-doc/SKILL.md +105 -0
- package/tools/format-workflow-md.js +263 -0
- package/tools/installer/README.md +60 -0
- package/tools/installer/cli-utils.js +181 -0
- package/tools/installer/commands/install.js +80 -0
- package/tools/installer/commands/status.js +65 -0
- package/tools/installer/commands/uninstall.js +167 -0
- package/tools/installer/core/config.js +52 -0
- package/tools/installer/core/custom-module-cache.js +260 -0
- package/tools/installer/core/existing-install.js +127 -0
- package/tools/installer/core/install-paths.js +129 -0
- package/tools/installer/core/installer.js +1790 -0
- package/tools/installer/core/manifest-generator.js +701 -0
- package/tools/installer/core/manifest.js +1040 -0
- package/tools/installer/custom-handler.js +112 -0
- package/tools/installer/external-official-modules.yaml +63 -0
- package/tools/installer/file-ops.js +204 -0
- package/tools/installer/ide/_config-driven.js +536 -0
- package/tools/installer/ide/manager.js +247 -0
- package/tools/installer/ide/platform-codes.js +37 -0
- package/tools/installer/ide/platform-codes.yaml +192 -0
- package/tools/installer/ide/shared/agent-command-generator.js +180 -0
- package/tools/installer/ide/shared/module-injections.js +136 -0
- package/tools/installer/ide/shared/path-utils.js +364 -0
- package/tools/installer/ide/shared/scm-artifacts.js +208 -0
- package/tools/installer/ide/shared/skill-manifest.js +72 -0
- package/tools/installer/ide/templates/agent-command-template.md +14 -0
- package/tools/installer/ide/templates/combined/antigravity.md +8 -0
- package/tools/installer/ide/templates/combined/default-agent.md +15 -0
- package/tools/installer/ide/templates/combined/default-task.md +10 -0
- package/tools/installer/ide/templates/combined/default-tool.md +10 -0
- package/tools/installer/ide/templates/combined/default-workflow.md +6 -0
- package/tools/installer/ide/templates/combined/gemini-agent.toml +14 -0
- package/tools/installer/ide/templates/combined/gemini-task.toml +11 -0
- package/tools/installer/ide/templates/combined/gemini-tool.toml +11 -0
- package/tools/installer/ide/templates/combined/gemini-workflow-yaml.toml +16 -0
- package/tools/installer/ide/templates/combined/gemini-workflow.toml +14 -0
- package/tools/installer/ide/templates/combined/kiro-agent.md +16 -0
- package/tools/installer/ide/templates/combined/kiro-task.md +9 -0
- package/tools/installer/ide/templates/combined/kiro-tool.md +9 -0
- package/tools/installer/ide/templates/combined/kiro-workflow.md +7 -0
- package/tools/installer/ide/templates/combined/opencode-agent.md +15 -0
- package/tools/installer/ide/templates/combined/opencode-task.md +13 -0
- package/tools/installer/ide/templates/combined/opencode-tool.md +13 -0
- package/tools/installer/ide/templates/combined/opencode-workflow-yaml.md +16 -0
- package/tools/installer/ide/templates/combined/opencode-workflow.md +16 -0
- package/tools/installer/ide/templates/combined/rovodev.md +9 -0
- package/tools/installer/ide/templates/combined/trae.md +9 -0
- package/tools/installer/ide/templates/combined/windsurf-workflow.md +10 -0
- package/tools/installer/ide/templates/split/.gitkeep +0 -0
- package/tools/installer/install-messages.yaml +35 -0
- package/tools/installer/message-loader.js +83 -0
- package/tools/installer/modules/custom-modules.js +197 -0
- package/tools/installer/modules/external-manager.js +354 -0
- package/tools/installer/modules/official-modules.js +2043 -0
- package/tools/installer/project-root.js +77 -0
- package/tools/installer/prompts.js +809 -0
- package/tools/installer/scm-cli.js +108 -0
- package/tools/installer/ui.js +1683 -0
- package/tools/installer/yaml-format.js +245 -0
- package/tools/javascript-conventions.md +5 -0
- package/tools/migrate-custom-module-paths.js +124 -0
- package/tools/platform-codes.yaml +169 -0
- package/tools/validate-skills.js +736 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
const fs = require('node:fs');
|
|
2
|
+
const path = require('node:path');
|
|
3
|
+
const yaml = require('yaml');
|
|
4
|
+
const { execSync } = require('node:child_process');
|
|
5
|
+
|
|
6
|
+
// Dynamic import for ES module
|
|
7
|
+
let chalk;
|
|
8
|
+
|
|
9
|
+
// Initialize ES modules
|
|
10
|
+
async function initializeModules() {
|
|
11
|
+
if (!chalk) {
|
|
12
|
+
chalk = (await import('chalk')).default;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* YAML Formatter and Linter for SCM-Method
|
|
18
|
+
* Formats and validates YAML files and YAML embedded in Markdown
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
async function formatYamlContent(content, filename) {
|
|
22
|
+
await initializeModules();
|
|
23
|
+
try {
|
|
24
|
+
// First try to fix common YAML issues
|
|
25
|
+
let fixedContent = content
|
|
26
|
+
// Fix "commands :" -> "commands:"
|
|
27
|
+
.replaceAll(/^(\s*)(\w+)\s+:/gm, '$1$2:')
|
|
28
|
+
// Fix inconsistent list indentation
|
|
29
|
+
.replaceAll(/^(\s*)-\s{3,}/gm, '$1- ');
|
|
30
|
+
|
|
31
|
+
// Skip auto-fixing for .roomodes files - they have special nested structure
|
|
32
|
+
if (!filename.includes('.roomodes')) {
|
|
33
|
+
fixedContent = fixedContent
|
|
34
|
+
// Fix unquoted list items that contain special characters or multiple parts
|
|
35
|
+
.replaceAll(/^(\s*)-\s+(.*)$/gm, (match, indent, content) => {
|
|
36
|
+
// Skip if already quoted
|
|
37
|
+
if (content.startsWith('"') && content.endsWith('"')) {
|
|
38
|
+
return match;
|
|
39
|
+
}
|
|
40
|
+
// If the content contains special YAML characters or looks complex, quote it
|
|
41
|
+
// BUT skip if it looks like a proper YAML key-value pair (like "key: value")
|
|
42
|
+
if (
|
|
43
|
+
(content.includes(':') || content.includes('-') || content.includes('{') || content.includes('}')) &&
|
|
44
|
+
!/^\w+:\s/.test(content)
|
|
45
|
+
) {
|
|
46
|
+
// Remove any existing quotes first, escape internal quotes, then add proper quotes
|
|
47
|
+
const cleanContent = content.replaceAll(/^["']|["']$/g, '').replaceAll('"', String.raw`\"`);
|
|
48
|
+
return `${indent}- "${cleanContent}"`;
|
|
49
|
+
}
|
|
50
|
+
return match;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Debug: show what we're trying to parse
|
|
55
|
+
if (fixedContent !== content) {
|
|
56
|
+
console.log(chalk.blue(`🔧 Applied YAML fixes to ${filename}`));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Parse and re-dump YAML to format it
|
|
60
|
+
const parsed = yaml.parse(fixedContent);
|
|
61
|
+
const formatted = yaml.stringify(parsed, {
|
|
62
|
+
indent: 2,
|
|
63
|
+
lineWidth: 0, // Disable line wrapping
|
|
64
|
+
sortKeys: false, // Preserve key order
|
|
65
|
+
});
|
|
66
|
+
// Ensure POSIX-compliant final newline
|
|
67
|
+
return formatted.endsWith('\n') ? formatted : formatted + '\n';
|
|
68
|
+
} catch (error) {
|
|
69
|
+
console.error(chalk.red(`❌ YAML syntax error in ${filename}:`), error.message);
|
|
70
|
+
console.error(chalk.yellow(`💡 Try manually fixing the YAML structure first`));
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
async function processMarkdownFile(filePath) {
|
|
76
|
+
await initializeModules();
|
|
77
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
78
|
+
let modified = false;
|
|
79
|
+
let newContent = content;
|
|
80
|
+
|
|
81
|
+
// Fix untyped code blocks by adding 'text' type
|
|
82
|
+
// Match ``` at start of line followed by newline, but only if it's an opening fence
|
|
83
|
+
newContent = newContent.replaceAll(/^```\n([\s\S]*?)\n```$/gm, '```text\n$1\n```');
|
|
84
|
+
if (newContent !== content) {
|
|
85
|
+
modified = true;
|
|
86
|
+
console.log(chalk.blue(`🔧 Added 'text' type to untyped code blocks in ${filePath}`));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Find YAML code blocks
|
|
90
|
+
const yamlBlockRegex = /```ya?ml\n([\s\S]*?)\n```/g;
|
|
91
|
+
let match;
|
|
92
|
+
const replacements = [];
|
|
93
|
+
|
|
94
|
+
while ((match = yamlBlockRegex.exec(newContent)) !== null) {
|
|
95
|
+
const [fullMatch, yamlContent] = match;
|
|
96
|
+
const formatted = await formatYamlContent(yamlContent, filePath);
|
|
97
|
+
if (formatted !== null) {
|
|
98
|
+
const trimmedFormatted = formatted.replace(/\n$/, '');
|
|
99
|
+
|
|
100
|
+
if (trimmedFormatted !== yamlContent) {
|
|
101
|
+
modified = true;
|
|
102
|
+
console.log(chalk.green(`✓ Formatted YAML in ${filePath}`));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
replacements.push({
|
|
106
|
+
start: match.index,
|
|
107
|
+
end: match.index + fullMatch.length,
|
|
108
|
+
replacement: `\`\`\`yaml\n${trimmedFormatted}\n\`\`\``,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Apply replacements in reverse order to maintain indices
|
|
114
|
+
for (let index = replacements.length - 1; index >= 0; index--) {
|
|
115
|
+
const { start, end, replacement } = replacements[index];
|
|
116
|
+
newContent = newContent.slice(0, start) + replacement + newContent.slice(end);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (modified) {
|
|
120
|
+
fs.writeFileSync(filePath, newContent);
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
async function processYamlFile(filePath) {
|
|
127
|
+
await initializeModules();
|
|
128
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
129
|
+
const formatted = await formatYamlContent(content, filePath);
|
|
130
|
+
|
|
131
|
+
if (formatted === null) {
|
|
132
|
+
return false; // Syntax error
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (formatted !== content) {
|
|
136
|
+
fs.writeFileSync(filePath, formatted);
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
async function lintYamlFile(filePath) {
|
|
143
|
+
await initializeModules();
|
|
144
|
+
try {
|
|
145
|
+
// Use yaml-lint for additional validation
|
|
146
|
+
execSync(`npx yaml-lint "${filePath}"`, { stdio: 'pipe' });
|
|
147
|
+
return true;
|
|
148
|
+
} catch (error) {
|
|
149
|
+
console.error(chalk.red(`❌ YAML lint error in ${filePath}:`));
|
|
150
|
+
console.error(error.stdout?.toString() || error.message);
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
async function main() {
|
|
156
|
+
await initializeModules();
|
|
157
|
+
const arguments_ = process.argv.slice(2);
|
|
158
|
+
const glob = require('glob');
|
|
159
|
+
|
|
160
|
+
if (arguments_.length === 0) {
|
|
161
|
+
console.error('Usage: node yaml-format.js <file1> [file2] ...');
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
let hasErrors = false;
|
|
166
|
+
let hasChanges = false;
|
|
167
|
+
let filesProcessed = [];
|
|
168
|
+
|
|
169
|
+
// Expand glob patterns and collect all files
|
|
170
|
+
const allFiles = [];
|
|
171
|
+
for (const argument of arguments_) {
|
|
172
|
+
if (argument.includes('*')) {
|
|
173
|
+
// It's a glob pattern
|
|
174
|
+
const matches = glob.sync(argument);
|
|
175
|
+
allFiles.push(...matches);
|
|
176
|
+
} else {
|
|
177
|
+
// It's a direct file path
|
|
178
|
+
allFiles.push(argument);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
for (const filePath of allFiles) {
|
|
183
|
+
if (!fs.existsSync(filePath)) {
|
|
184
|
+
// Skip silently for glob patterns that don't match anything
|
|
185
|
+
if (!arguments_.some((argument) => argument.includes('*') && filePath === argument)) {
|
|
186
|
+
console.error(chalk.red(`❌ File not found: ${filePath}`));
|
|
187
|
+
hasErrors = true;
|
|
188
|
+
}
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
193
|
+
const basename = path.basename(filePath).toLowerCase();
|
|
194
|
+
|
|
195
|
+
try {
|
|
196
|
+
let changed = false;
|
|
197
|
+
if (extension === '.md') {
|
|
198
|
+
changed = await processMarkdownFile(filePath);
|
|
199
|
+
} else if (
|
|
200
|
+
extension === '.yaml' ||
|
|
201
|
+
extension === '.yml' ||
|
|
202
|
+
basename.includes('roomodes') ||
|
|
203
|
+
basename.includes('.yaml') ||
|
|
204
|
+
basename.includes('.yml')
|
|
205
|
+
) {
|
|
206
|
+
// Handle YAML files and special cases like .roomodes
|
|
207
|
+
changed = await processYamlFile(filePath);
|
|
208
|
+
|
|
209
|
+
// Also run linting
|
|
210
|
+
const lintPassed = await lintYamlFile(filePath);
|
|
211
|
+
if (!lintPassed) hasErrors = true;
|
|
212
|
+
} else {
|
|
213
|
+
// Skip silently for unsupported files
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
if (changed) {
|
|
218
|
+
hasChanges = true;
|
|
219
|
+
filesProcessed.push(filePath);
|
|
220
|
+
}
|
|
221
|
+
} catch (error) {
|
|
222
|
+
console.error(chalk.red(`❌ Error processing ${filePath}:`), error.message);
|
|
223
|
+
hasErrors = true;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
if (hasChanges) {
|
|
228
|
+
console.log(chalk.green(`\n✨ YAML formatting completed! Modified ${filesProcessed.length} files:`));
|
|
229
|
+
for (const file of filesProcessed) console.log(chalk.blue(` 📝 ${file}`));
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
if (hasErrors) {
|
|
233
|
+
console.error(chalk.red('\n💥 Some files had errors. Please fix them before committing.'));
|
|
234
|
+
process.exit(1);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (require.main === module) {
|
|
239
|
+
main().catch((error) => {
|
|
240
|
+
console.error('Error:', error);
|
|
241
|
+
process.exit(1);
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
module.exports = { formatYamlContent, processMarkdownFile, processYamlFile };
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration script to convert relative paths to absolute paths in custom module manifests
|
|
3
|
+
* This should be run once to update existing installations
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const fs = require('fs-extra');
|
|
7
|
+
const path = require('node:path');
|
|
8
|
+
const yaml = require('yaml');
|
|
9
|
+
const chalk = require('chalk');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Find SCM directory in project
|
|
13
|
+
*/
|
|
14
|
+
function findBmadDir(projectDir = process.cwd()) {
|
|
15
|
+
const possibleNames = ['_scm'];
|
|
16
|
+
|
|
17
|
+
for (const name of possibleNames) {
|
|
18
|
+
const scmDir = path.join(projectDir, name);
|
|
19
|
+
if (fs.existsSync(scmDir)) {
|
|
20
|
+
return scmDir;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Update manifest to use absolute paths
|
|
29
|
+
*/
|
|
30
|
+
async function updateManifest(manifestPath, projectRoot) {
|
|
31
|
+
console.log(chalk.cyan(`\nUpdating manifest: ${manifestPath}`));
|
|
32
|
+
|
|
33
|
+
const content = await fs.readFile(manifestPath, 'utf8');
|
|
34
|
+
const manifest = yaml.parse(content);
|
|
35
|
+
|
|
36
|
+
if (!manifest.customModules || manifest.customModules.length === 0) {
|
|
37
|
+
console.log(chalk.dim(' No custom modules found'));
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let updated = false;
|
|
42
|
+
|
|
43
|
+
for (const customModule of manifest.customModules) {
|
|
44
|
+
if (customModule.relativePath && !customModule.sourcePath) {
|
|
45
|
+
// Convert relative path to absolute
|
|
46
|
+
const absolutePath = path.resolve(projectRoot, customModule.relativePath);
|
|
47
|
+
customModule.sourcePath = absolutePath;
|
|
48
|
+
|
|
49
|
+
// Remove the old relativePath
|
|
50
|
+
delete customModule.relativePath;
|
|
51
|
+
|
|
52
|
+
console.log(chalk.green(` ✓ Updated ${customModule.id}: ${customModule.relativePath} → ${absolutePath}`));
|
|
53
|
+
updated = true;
|
|
54
|
+
} else if (customModule.sourcePath && !path.isAbsolute(customModule.sourcePath)) {
|
|
55
|
+
// Source path exists but is not absolute
|
|
56
|
+
const absolutePath = path.resolve(customModule.sourcePath);
|
|
57
|
+
customModule.sourcePath = absolutePath;
|
|
58
|
+
|
|
59
|
+
console.log(chalk.green(` ✓ Updated ${customModule.id}: ${customModule.sourcePath} → ${absolutePath}`));
|
|
60
|
+
updated = true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (updated) {
|
|
65
|
+
// Write back the updated manifest
|
|
66
|
+
const yamlStr = yaml.dump(manifest, {
|
|
67
|
+
indent: 2,
|
|
68
|
+
lineWidth: -1,
|
|
69
|
+
noRefs: true,
|
|
70
|
+
sortKeys: false,
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
await fs.writeFile(manifestPath, yamlStr);
|
|
74
|
+
console.log(chalk.green(' Manifest updated successfully'));
|
|
75
|
+
} else {
|
|
76
|
+
console.log(chalk.dim(' All paths already absolute'));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return updated;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Main migration function
|
|
84
|
+
*/
|
|
85
|
+
async function migrate(directory) {
|
|
86
|
+
const projectRoot = path.resolve(directory || process.cwd());
|
|
87
|
+
const scmDir = findBmadDir(projectRoot);
|
|
88
|
+
|
|
89
|
+
if (!scmDir) {
|
|
90
|
+
console.error(chalk.red('✗ No SCM installation found in directory'));
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
console.log(chalk.blue.bold('🔄 SCM Custom Module Path Migration'));
|
|
95
|
+
console.log(chalk.dim(`Project: ${projectRoot}`));
|
|
96
|
+
console.log(chalk.dim(`SCM Directory: ${scmDir}`));
|
|
97
|
+
|
|
98
|
+
const manifestPath = path.join(scmDir, '_config', 'manifest.yaml');
|
|
99
|
+
|
|
100
|
+
if (!fs.existsSync(manifestPath)) {
|
|
101
|
+
console.error(chalk.red('✗ No manifest.yaml found'));
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const updated = await updateManifest(manifestPath, projectRoot);
|
|
106
|
+
|
|
107
|
+
if (updated) {
|
|
108
|
+
console.log(chalk.green.bold('\n✨ Migration completed successfully!'));
|
|
109
|
+
console.log(chalk.dim('Custom modules now use absolute source paths.'));
|
|
110
|
+
} else {
|
|
111
|
+
console.log(chalk.yellow('\n⚠ No migration needed - paths already absolute'));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// Run migration if called directly
|
|
116
|
+
if (require.main === module) {
|
|
117
|
+
const directory = process.argv[2];
|
|
118
|
+
migrate(directory).catch((error) => {
|
|
119
|
+
console.error(chalk.red('\n✗ Migration failed:'), error.message);
|
|
120
|
+
process.exit(1);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
module.exports = { migrate };
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# SCM Platform Codes Configuration
|
|
2
|
+
# Central configuration for all platform/IDE codes used in the SCM system
|
|
3
|
+
#
|
|
4
|
+
# This file defines the standardized platform codes that are used throughout
|
|
5
|
+
# the installation system to identify different platforms (IDEs, tools, etc.)
|
|
6
|
+
#
|
|
7
|
+
# Format:
|
|
8
|
+
# code: Platform identifier used internally
|
|
9
|
+
# name: Display name shown to users
|
|
10
|
+
# preferred: Whether this platform is shown as a recommended option on install
|
|
11
|
+
# category: Type of platform (ide, tool, service, etc.)
|
|
12
|
+
|
|
13
|
+
platforms:
|
|
14
|
+
# Recommended Platforms
|
|
15
|
+
claude-code:
|
|
16
|
+
name: "Claude Code"
|
|
17
|
+
preferred: true
|
|
18
|
+
category: cli
|
|
19
|
+
description: "Anthropic's official CLI for Claude"
|
|
20
|
+
|
|
21
|
+
cursor:
|
|
22
|
+
name: "Cursor"
|
|
23
|
+
preferred: true
|
|
24
|
+
category: ide
|
|
25
|
+
description: "AI-first code editor"
|
|
26
|
+
|
|
27
|
+
# Other IDEs and Tools
|
|
28
|
+
cline:
|
|
29
|
+
name: "Cline"
|
|
30
|
+
preferred: false
|
|
31
|
+
category: ide
|
|
32
|
+
description: "AI coding assistant"
|
|
33
|
+
|
|
34
|
+
opencode:
|
|
35
|
+
name: "OpenCode"
|
|
36
|
+
preferred: false
|
|
37
|
+
category: ide
|
|
38
|
+
description: "OpenCode terminal coding assistant"
|
|
39
|
+
|
|
40
|
+
codebuddy:
|
|
41
|
+
name: "CodeBuddy"
|
|
42
|
+
preferred: false
|
|
43
|
+
category: ide
|
|
44
|
+
description: "Tencent Cloud Code Assistant - AI-powered coding companion"
|
|
45
|
+
|
|
46
|
+
auggie:
|
|
47
|
+
name: "Auggie"
|
|
48
|
+
preferred: false
|
|
49
|
+
category: cli
|
|
50
|
+
description: "AI development tool"
|
|
51
|
+
|
|
52
|
+
roo:
|
|
53
|
+
name: "Roo Code"
|
|
54
|
+
preferred: false
|
|
55
|
+
category: ide
|
|
56
|
+
description: "Enhanced Cline fork"
|
|
57
|
+
|
|
58
|
+
rovo-dev:
|
|
59
|
+
name: "Rovo Dev"
|
|
60
|
+
preferred: false
|
|
61
|
+
category: ide
|
|
62
|
+
description: "Atlassian's Rovo development environment"
|
|
63
|
+
|
|
64
|
+
kiro:
|
|
65
|
+
name: "Kiro"
|
|
66
|
+
preferred: false
|
|
67
|
+
category: ide
|
|
68
|
+
description: "Amazon's AI-powered IDE"
|
|
69
|
+
|
|
70
|
+
github-copilot:
|
|
71
|
+
name: "GitHub Copilot"
|
|
72
|
+
preferred: false
|
|
73
|
+
category: ide
|
|
74
|
+
description: "GitHub's AI pair programmer"
|
|
75
|
+
|
|
76
|
+
codex:
|
|
77
|
+
name: "Codex"
|
|
78
|
+
preferred: false
|
|
79
|
+
category: cli
|
|
80
|
+
description: "OpenAI Codex integration"
|
|
81
|
+
|
|
82
|
+
qwen:
|
|
83
|
+
name: "QwenCoder"
|
|
84
|
+
preferred: false
|
|
85
|
+
category: ide
|
|
86
|
+
description: "Qwen AI coding assistant"
|
|
87
|
+
|
|
88
|
+
gemini:
|
|
89
|
+
name: "Gemini CLI"
|
|
90
|
+
preferred: false
|
|
91
|
+
category: cli
|
|
92
|
+
description: "Google's CLI for Gemini"
|
|
93
|
+
|
|
94
|
+
iflow:
|
|
95
|
+
name: "iFlow"
|
|
96
|
+
preferred: false
|
|
97
|
+
category: ide
|
|
98
|
+
description: "AI workflow automation"
|
|
99
|
+
|
|
100
|
+
kilo:
|
|
101
|
+
name: "KiloCoder"
|
|
102
|
+
preferred: false
|
|
103
|
+
category: ide
|
|
104
|
+
description: "AI coding platform"
|
|
105
|
+
|
|
106
|
+
crush:
|
|
107
|
+
name: "Crush"
|
|
108
|
+
preferred: false
|
|
109
|
+
category: ide
|
|
110
|
+
description: "AI development assistant"
|
|
111
|
+
|
|
112
|
+
antigravity:
|
|
113
|
+
name: "Google Antigravity"
|
|
114
|
+
preferred: false
|
|
115
|
+
category: ide
|
|
116
|
+
description: "Google's AI development environment"
|
|
117
|
+
|
|
118
|
+
trae:
|
|
119
|
+
name: "Trae"
|
|
120
|
+
preferred: false
|
|
121
|
+
category: ide
|
|
122
|
+
description: "AI coding tool"
|
|
123
|
+
|
|
124
|
+
windsurf:
|
|
125
|
+
name: "Windsurf"
|
|
126
|
+
preferred: false
|
|
127
|
+
category: ide
|
|
128
|
+
description: "AI-powered IDE with cascade flows"
|
|
129
|
+
|
|
130
|
+
junie:
|
|
131
|
+
name: "Junie"
|
|
132
|
+
preferred: false
|
|
133
|
+
category: cli
|
|
134
|
+
description: "AI coding agent by JetBrains"
|
|
135
|
+
|
|
136
|
+
ona:
|
|
137
|
+
name: "Ona"
|
|
138
|
+
preferred: false
|
|
139
|
+
category: ide
|
|
140
|
+
description: "Ona AI development environment"
|
|
141
|
+
|
|
142
|
+
# Platform categories
|
|
143
|
+
categories:
|
|
144
|
+
ide:
|
|
145
|
+
name: "Integrated Development Environment"
|
|
146
|
+
description: "Full-featured code editors with AI assistance"
|
|
147
|
+
|
|
148
|
+
cli:
|
|
149
|
+
name: "Command Line Interface"
|
|
150
|
+
description: "Terminal-based tools"
|
|
151
|
+
|
|
152
|
+
tool:
|
|
153
|
+
name: "Development Tool"
|
|
154
|
+
description: "Standalone development utilities"
|
|
155
|
+
|
|
156
|
+
service:
|
|
157
|
+
name: "Cloud Service"
|
|
158
|
+
description: "Cloud-based development platforms"
|
|
159
|
+
|
|
160
|
+
extension:
|
|
161
|
+
name: "Editor Extension"
|
|
162
|
+
description: "Plugins for existing editors"
|
|
163
|
+
|
|
164
|
+
# Naming conventions and rules
|
|
165
|
+
conventions:
|
|
166
|
+
code_format: "lowercase-kebab-case"
|
|
167
|
+
name_format: "Title Case"
|
|
168
|
+
max_code_length: 20
|
|
169
|
+
allowed_characters: "a-z0-9-"
|