@harness-forge/cli 0.1.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/.agents/skills/api-contract-review/SKILL.md +23 -0
- package/.agents/skills/architecture-decision-records/SKILL.md +23 -0
- package/.agents/skills/cloud-architect/SKILL.md +21 -0
- package/.agents/skills/cpp-engineering/SKILL.md +21 -0
- package/.agents/skills/db-migration-review/SKILL.md +23 -0
- package/.agents/skills/documentation-lookup/SKILL.md +8 -0
- package/.agents/skills/dotnet-engineering/SKILL.md +29 -0
- package/.agents/skills/go-engineering/SKILL.md +21 -0
- package/.agents/skills/java-engineering/SKILL.md +24 -0
- package/.agents/skills/javascript-engineering/SKILL.md +31 -0
- package/.agents/skills/kotlin-engineering/SKILL.md +21 -0
- package/.agents/skills/lua-engineering/SKILL.md +28 -0
- package/.agents/skills/parallel-worktree-supervisor/SKILL.md +23 -0
- package/.agents/skills/perl-engineering/SKILL.md +21 -0
- package/.agents/skills/php-engineering/SKILL.md +21 -0
- package/.agents/skills/powershell-engineering/SKILL.md +24 -0
- package/.agents/skills/python-engineering/SKILL.md +22 -0
- package/.agents/skills/release-readiness/SKILL.md +8 -0
- package/.agents/skills/repo-modernization/SKILL.md +23 -0
- package/.agents/skills/repo-onboarding/SKILL.md +23 -0
- package/.agents/skills/rust-engineering/SKILL.md +21 -0
- package/.agents/skills/security-scan/SKILL.md +8 -0
- package/.agents/skills/shell-engineering/SKILL.md +21 -0
- package/.agents/skills/speckit-analyze/SKILL.md +190 -0
- package/.agents/skills/speckit-checklist/SKILL.md +301 -0
- package/.agents/skills/speckit-clarify/SKILL.md +183 -0
- package/.agents/skills/speckit-constitution/SKILL.md +86 -0
- package/.agents/skills/speckit-implement/SKILL.md +204 -0
- package/.agents/skills/speckit-plan/SKILL.md +151 -0
- package/.agents/skills/speckit-specify/SKILL.md +304 -0
- package/.agents/skills/speckit-tasks/SKILL.md +197 -0
- package/.agents/skills/speckit-taskstoissues/SKILL.md +35 -0
- package/.agents/skills/swift-engineering/SKILL.md +21 -0
- package/.agents/skills/typescript-engineering/SKILL.md +28 -0
- package/.specify/README.md +3 -0
- package/.specify/extensions.yml +3 -0
- package/.specify/init-options.json +5 -0
- package/.specify/memory/constitution.md +5 -0
- package/.specify/scripts/powershell/check-prerequisites.ps1 +54 -0
- package/.specify/scripts/powershell/common.ps1 +263 -0
- package/.specify/scripts/powershell/create-new-feature.ps1 +23 -0
- package/.specify/scripts/powershell/setup-plan.ps1 +10 -0
- package/.specify/scripts/powershell/update-agent-context.ps1 +6 -0
- package/.specify/state/agent-context.md +1 -0
- package/.specify/state/flow-state.json +21 -0
- package/.specify/templates/agent-file-template.md +40 -0
- package/.specify/templates/checklist-template.md +5 -0
- package/.specify/templates/commands/plan.md +1 -0
- package/.specify/templates/commands/specify.md +1 -0
- package/.specify/templates/commands/tasks.md +1 -0
- package/.specify/templates/constitution-template.md +5 -0
- package/.specify/templates/plan-template.md +9 -0
- package/.specify/templates/spec-template.md +9 -0
- package/.specify/templates/tasks-template.md +5 -0
- package/AGENTS.md +75 -0
- package/CHANGELOG.md +15 -0
- package/CONTRIBUTING.md +38 -0
- package/LICENSE +674 -0
- package/README.md +386 -0
- package/RESEARCH-SOURCES.md +75 -0
- package/VALIDATION.md +32 -0
- package/agents/planner.md +49 -0
- package/commands/plan.md +41 -0
- package/commands/test.md +41 -0
- package/contexts/dev.md +25 -0
- package/dist/application/flow/load-flow-state.d.ts +17 -0
- package/dist/application/flow/load-flow-state.d.ts.map +1 -0
- package/dist/application/flow/load-flow-state.js +123 -0
- package/dist/application/flow/load-flow-state.js.map +1 -0
- package/dist/application/flow/save-flow-state.d.ts +3 -0
- package/dist/application/flow/save-flow-state.d.ts.map +1 -0
- package/dist/application/flow/save-flow-state.js +13 -0
- package/dist/application/flow/save-flow-state.js.map +1 -0
- package/dist/application/install/agent-manifest.d.ts +42 -0
- package/dist/application/install/agent-manifest.d.ts.map +1 -0
- package/dist/application/install/agent-manifest.js +144 -0
- package/dist/application/install/agent-manifest.js.map +1 -0
- package/dist/application/install/apply-install.d.ts +6 -0
- package/dist/application/install/apply-install.d.ts.map +1 -0
- package/dist/application/install/apply-install.js +83 -0
- package/dist/application/install/apply-install.js.map +1 -0
- package/dist/application/install/bootstrap-workspace.d.ts +33 -0
- package/dist/application/install/bootstrap-workspace.d.ts.map +1 -0
- package/dist/application/install/bootstrap-workspace.js +123 -0
- package/dist/application/install/bootstrap-workspace.js.map +1 -0
- package/dist/application/install/discover-workspace-targets.d.ts +9 -0
- package/dist/application/install/discover-workspace-targets.d.ts.map +1 -0
- package/dist/application/install/discover-workspace-targets.js +61 -0
- package/dist/application/install/discover-workspace-targets.js.map +1 -0
- package/dist/application/install/generate-guidance.d.ts +3 -0
- package/dist/application/install/generate-guidance.d.ts.map +1 -0
- package/dist/application/install/generate-guidance.js +25 -0
- package/dist/application/install/generate-guidance.js.map +1 -0
- package/dist/application/install/initialize-workspace.d.ts +16 -0
- package/dist/application/install/initialize-workspace.d.ts.map +1 -0
- package/dist/application/install/initialize-workspace.js +165 -0
- package/dist/application/install/initialize-workspace.js.map +1 -0
- package/dist/application/install/plan-install.d.ts +9 -0
- package/dist/application/install/plan-install.d.ts.map +1 -0
- package/dist/application/install/plan-install.js +123 -0
- package/dist/application/install/plan-install.js.map +1 -0
- package/dist/application/install/reconcile-state.d.ts +6 -0
- package/dist/application/install/reconcile-state.d.ts.map +1 -0
- package/dist/application/install/reconcile-state.js +39 -0
- package/dist/application/install/reconcile-state.js.map +1 -0
- package/dist/application/install/refresh-workspace-runtime.d.ts +9 -0
- package/dist/application/install/refresh-workspace-runtime.d.ts.map +1 -0
- package/dist/application/install/refresh-workspace-runtime.js +69 -0
- package/dist/application/install/refresh-workspace-runtime.js.map +1 -0
- package/dist/application/install/rewrite-installed-ai-layer.d.ts +3 -0
- package/dist/application/install/rewrite-installed-ai-layer.d.ts.map +1 -0
- package/dist/application/install/rewrite-installed-ai-layer.js +72 -0
- package/dist/application/install/rewrite-installed-ai-layer.js.map +1 -0
- package/dist/application/install/shared-runtime.d.ts +5 -0
- package/dist/application/install/shared-runtime.d.ts.map +1 -0
- package/dist/application/install/shared-runtime.js +388 -0
- package/dist/application/install/shared-runtime.js.map +1 -0
- package/dist/application/install/shell-integration.d.ts +40 -0
- package/dist/application/install/shell-integration.d.ts.map +1 -0
- package/dist/application/install/shell-integration.js +232 -0
- package/dist/application/install/shell-integration.js.map +1 -0
- package/dist/application/install/validate-environment.d.ts +2 -0
- package/dist/application/install/validate-environment.d.ts.map +1 -0
- package/dist/application/install/validate-environment.js +19 -0
- package/dist/application/install/validate-environment.js.map +1 -0
- package/dist/application/install/workspace-launcher.d.ts +7 -0
- package/dist/application/install/workspace-launcher.d.ts.map +1 -0
- package/dist/application/install/workspace-launcher.js +45 -0
- package/dist/application/install/workspace-launcher.js.map +1 -0
- package/dist/application/maintenance/audit-install.d.ts +17 -0
- package/dist/application/maintenance/audit-install.d.ts.map +1 -0
- package/dist/application/maintenance/audit-install.js +31 -0
- package/dist/application/maintenance/audit-install.js.map +1 -0
- package/dist/application/maintenance/diff-install.d.ts +7 -0
- package/dist/application/maintenance/diff-install.d.ts.map +1 -0
- package/dist/application/maintenance/diff-install.js +20 -0
- package/dist/application/maintenance/diff-install.js.map +1 -0
- package/dist/application/maintenance/doctor-workspace.d.ts +6 -0
- package/dist/application/maintenance/doctor-workspace.d.ts.map +1 -0
- package/dist/application/maintenance/doctor-workspace.js +12 -0
- package/dist/application/maintenance/doctor-workspace.js.map +1 -0
- package/dist/application/maintenance/prune-install.d.ts +5 -0
- package/dist/application/maintenance/prune-install.d.ts.map +1 -0
- package/dist/application/maintenance/prune-install.js +30 -0
- package/dist/application/maintenance/prune-install.js.map +1 -0
- package/dist/application/maintenance/sync-install.d.ts +6 -0
- package/dist/application/maintenance/sync-install.d.ts.map +1 -0
- package/dist/application/maintenance/sync-install.js +24 -0
- package/dist/application/maintenance/sync-install.js.map +1 -0
- package/dist/application/maintenance/upgrade-surface.d.ts +7 -0
- package/dist/application/maintenance/upgrade-surface.d.ts.map +1 -0
- package/dist/application/maintenance/upgrade-surface.js +18 -0
- package/dist/application/maintenance/upgrade-surface.js.map +1 -0
- package/dist/application/migration/scan-reference-install.d.ts +9 -0
- package/dist/application/migration/scan-reference-install.d.ts.map +1 -0
- package/dist/application/migration/scan-reference-install.js +17 -0
- package/dist/application/migration/scan-reference-install.js.map +1 -0
- package/dist/application/planning/resolve-bundles.d.ts +8 -0
- package/dist/application/planning/resolve-bundles.d.ts.map +1 -0
- package/dist/application/planning/resolve-bundles.js +40 -0
- package/dist/application/planning/resolve-bundles.js.map +1 -0
- package/dist/application/recommendations/recommend-bundles.d.ts +2 -0
- package/dist/application/recommendations/recommend-bundles.d.ts.map +1 -0
- package/dist/application/recommendations/recommend-bundles.js +89 -0
- package/dist/application/recommendations/recommend-bundles.js.map +1 -0
- package/dist/application/recommendations/recommend-from-intelligence.d.ts +3 -0
- package/dist/application/recommendations/recommend-from-intelligence.d.ts.map +1 -0
- package/dist/application/recommendations/recommend-from-intelligence.js +38 -0
- package/dist/application/recommendations/recommend-from-intelligence.js.map +1 -0
- package/dist/application/recommendations/recommend-templates.d.ts +2 -0
- package/dist/application/recommendations/recommend-templates.d.ts.map +1 -0
- package/dist/application/recommendations/recommend-templates.js +11 -0
- package/dist/application/recommendations/recommend-templates.js.map +1 -0
- package/dist/application/recursive/build-environment.d.ts +12 -0
- package/dist/application/recursive/build-environment.d.ts.map +1 -0
- package/dist/application/recursive/build-environment.js +91 -0
- package/dist/application/recursive/build-environment.js.map +1 -0
- package/dist/application/recursive/compact-session.d.ts +6 -0
- package/dist/application/recursive/compact-session.d.ts.map +1 -0
- package/dist/application/recursive/compact-session.js +10 -0
- package/dist/application/recursive/compact-session.js.map +1 -0
- package/dist/application/recursive/finalize-session.d.ts +6 -0
- package/dist/application/recursive/finalize-session.d.ts.map +1 -0
- package/dist/application/recursive/finalize-session.js +10 -0
- package/dist/application/recursive/finalize-session.js.map +1 -0
- package/dist/application/recursive/plan-task.d.ts +16 -0
- package/dist/application/recursive/plan-task.d.ts.map +1 -0
- package/dist/application/recursive/plan-task.js +115 -0
- package/dist/application/recursive/plan-task.js.map +1 -0
- package/dist/application/runtime/assess-architecture-significance.d.ts +13 -0
- package/dist/application/runtime/assess-architecture-significance.d.ts.map +1 -0
- package/dist/application/runtime/assess-architecture-significance.js +65 -0
- package/dist/application/runtime/assess-architecture-significance.js.map +1 -0
- package/dist/application/runtime/command-catalog.d.ts +17 -0
- package/dist/application/runtime/command-catalog.d.ts.map +1 -0
- package/dist/application/runtime/command-catalog.js +99 -0
- package/dist/application/runtime/command-catalog.js.map +1 -0
- package/dist/application/runtime/create-asr-record.d.ts +18 -0
- package/dist/application/runtime/create-asr-record.d.ts.map +1 -0
- package/dist/application/runtime/create-asr-record.js +105 -0
- package/dist/application/runtime/create-asr-record.js.map +1 -0
- package/dist/application/runtime/decision-runtime-store.d.ts +13 -0
- package/dist/application/runtime/decision-runtime-store.d.ts.map +1 -0
- package/dist/application/runtime/decision-runtime-store.js +60 -0
- package/dist/application/runtime/decision-runtime-store.js.map +1 -0
- package/dist/application/runtime/derive-impact-analysis.d.ts +5 -0
- package/dist/application/runtime/derive-impact-analysis.d.ts.map +1 -0
- package/dist/application/runtime/derive-impact-analysis.js +78 -0
- package/dist/application/runtime/derive-impact-analysis.js.map +1 -0
- package/dist/application/runtime/select-files-of-interest.d.ts +29 -0
- package/dist/application/runtime/select-files-of-interest.d.ts.map +1 -0
- package/dist/application/runtime/select-files-of-interest.js +162 -0
- package/dist/application/runtime/select-files-of-interest.js.map +1 -0
- package/dist/application/runtime/task-runtime-store.d.ts +37 -0
- package/dist/application/runtime/task-runtime-store.d.ts.map +1 -0
- package/dist/application/runtime/task-runtime-store.js +84 -0
- package/dist/application/runtime/task-runtime-store.js.map +1 -0
- package/dist/application/validation/validate-templates.d.ts +19 -0
- package/dist/application/validation/validate-templates.d.ts.map +1 -0
- package/dist/application/validation/validate-templates.js +142 -0
- package/dist/application/validation/validate-templates.js.map +1 -0
- package/dist/cli/commands/audit.d.ts +3 -0
- package/dist/cli/commands/audit.d.ts.map +1 -0
- package/dist/cli/commands/audit.js +37 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/catalog.d.ts +3 -0
- package/dist/cli/commands/catalog.d.ts.map +1 -0
- package/dist/cli/commands/catalog.js +142 -0
- package/dist/cli/commands/catalog.js.map +1 -0
- package/dist/cli/commands/commands.d.ts +3 -0
- package/dist/cli/commands/commands.d.ts.map +1 -0
- package/dist/cli/commands/commands.js +32 -0
- package/dist/cli/commands/commands.js.map +1 -0
- package/dist/cli/commands/diff-install.d.ts +3 -0
- package/dist/cli/commands/diff-install.d.ts.map +1 -0
- package/dist/cli/commands/diff-install.js +31 -0
- package/dist/cli/commands/diff-install.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +33 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/export.d.ts +3 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +37 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/flow.d.ts +3 -0
- package/dist/cli/commands/flow.d.ts.map +1 -0
- package/dist/cli/commands/flow.js +27 -0
- package/dist/cli/commands/flow.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +91 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/install.d.ts +3 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +119 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/intelligence.d.ts +3 -0
- package/dist/cli/commands/intelligence.d.ts.map +1 -0
- package/dist/cli/commands/intelligence.js +63 -0
- package/dist/cli/commands/intelligence.js.map +1 -0
- package/dist/cli/commands/maintenance.d.ts +3 -0
- package/dist/cli/commands/maintenance.d.ts.map +1 -0
- package/dist/cli/commands/maintenance.js +81 -0
- package/dist/cli/commands/maintenance.js.map +1 -0
- package/dist/cli/commands/observability.d.ts +3 -0
- package/dist/cli/commands/observability.d.ts.map +1 -0
- package/dist/cli/commands/observability.js +33 -0
- package/dist/cli/commands/observability.js.map +1 -0
- package/dist/cli/commands/pack.d.ts +3 -0
- package/dist/cli/commands/pack.d.ts.map +1 -0
- package/dist/cli/commands/pack.js +25 -0
- package/dist/cli/commands/pack.js.map +1 -0
- package/dist/cli/commands/parallel.d.ts +3 -0
- package/dist/cli/commands/parallel.d.ts.map +1 -0
- package/dist/cli/commands/parallel.js +45 -0
- package/dist/cli/commands/parallel.js.map +1 -0
- package/dist/cli/commands/prune.d.ts +3 -0
- package/dist/cli/commands/prune.d.ts.map +1 -0
- package/dist/cli/commands/prune.js +25 -0
- package/dist/cli/commands/prune.js.map +1 -0
- package/dist/cli/commands/recommend.d.ts +3 -0
- package/dist/cli/commands/recommend.d.ts.map +1 -0
- package/dist/cli/commands/recommend.js +25 -0
- package/dist/cli/commands/recommend.js.map +1 -0
- package/dist/cli/commands/recursive.d.ts +3 -0
- package/dist/cli/commands/recursive.d.ts.map +1 -0
- package/dist/cli/commands/recursive.js +138 -0
- package/dist/cli/commands/recursive.js.map +1 -0
- package/dist/cli/commands/refresh.d.ts +3 -0
- package/dist/cli/commands/refresh.d.ts.map +1 -0
- package/dist/cli/commands/refresh.js +33 -0
- package/dist/cli/commands/refresh.js.map +1 -0
- package/dist/cli/commands/review.d.ts +3 -0
- package/dist/cli/commands/review.d.ts.map +1 -0
- package/dist/cli/commands/review.js +53 -0
- package/dist/cli/commands/review.js.map +1 -0
- package/dist/cli/commands/script-runner.d.ts +2 -0
- package/dist/cli/commands/script-runner.d.ts.map +1 -0
- package/dist/cli/commands/script-runner.js +21 -0
- package/dist/cli/commands/script-runner.js.map +1 -0
- package/dist/cli/commands/shell.d.ts +3 -0
- package/dist/cli/commands/shell.d.ts.map +1 -0
- package/dist/cli/commands/shell.js +91 -0
- package/dist/cli/commands/shell.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +31 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +3 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +25 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/target.d.ts +3 -0
- package/dist/cli/commands/target.d.ts.map +1 -0
- package/dist/cli/commands/target.js +78 -0
- package/dist/cli/commands/target.js.map +1 -0
- package/dist/cli/commands/task.d.ts +3 -0
- package/dist/cli/commands/task.d.ts.map +1 -0
- package/dist/cli/commands/task.js +57 -0
- package/dist/cli/commands/task.js.map +1 -0
- package/dist/cli/commands/template.d.ts +3 -0
- package/dist/cli/commands/template.d.ts.map +1 -0
- package/dist/cli/commands/template.js +81 -0
- package/dist/cli/commands/template.js.map +1 -0
- package/dist/cli/commands/upgrade-surface.d.ts +3 -0
- package/dist/cli/commands/upgrade-surface.d.ts.map +1 -0
- package/dist/cli/commands/upgrade-surface.js +24 -0
- package/dist/cli/commands/upgrade-surface.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +86 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/interactive/default-recommendations.d.ts +9 -0
- package/dist/cli/interactive/default-recommendations.d.ts.map +1 -0
- package/dist/cli/interactive/default-recommendations.js +19 -0
- package/dist/cli/interactive/default-recommendations.js.map +1 -0
- package/dist/cli/interactive/entry-router.d.ts +5 -0
- package/dist/cli/interactive/entry-router.d.ts.map +1 -0
- package/dist/cli/interactive/entry-router.js +30 -0
- package/dist/cli/interactive/entry-router.js.map +1 -0
- package/dist/cli/interactive/invocation-context.d.ts +16 -0
- package/dist/cli/interactive/invocation-context.d.ts.map +1 -0
- package/dist/cli/interactive/invocation-context.js +33 -0
- package/dist/cli/interactive/invocation-context.js.map +1 -0
- package/dist/cli/interactive/onboarding-flow.d.ts +3 -0
- package/dist/cli/interactive/onboarding-flow.d.ts.map +1 -0
- package/dist/cli/interactive/onboarding-flow.js +81 -0
- package/dist/cli/interactive/onboarding-flow.js.map +1 -0
- package/dist/cli/interactive/project-hub.d.ts +3 -0
- package/dist/cli/interactive/project-hub.d.ts.map +1 -0
- package/dist/cli/interactive/project-hub.js +159 -0
- package/dist/cli/interactive/project-hub.js.map +1 -0
- package/dist/cli/interactive/prompt-io.d.ts +23 -0
- package/dist/cli/interactive/prompt-io.d.ts.map +1 -0
- package/dist/cli/interactive/prompt-io.js +144 -0
- package/dist/cli/interactive/prompt-io.js.map +1 -0
- package/dist/cli/interactive/prompts/folder-selection.d.ts +3 -0
- package/dist/cli/interactive/prompts/folder-selection.d.ts.map +1 -0
- package/dist/cli/interactive/prompts/folder-selection.js +25 -0
- package/dist/cli/interactive/prompts/folder-selection.js.map +1 -0
- package/dist/cli/interactive/prompts/module-selection.d.ts +4 -0
- package/dist/cli/interactive/prompts/module-selection.d.ts.map +1 -0
- package/dist/cli/interactive/prompts/module-selection.js +21 -0
- package/dist/cli/interactive/prompts/module-selection.js.map +1 -0
- package/dist/cli/interactive/prompts/setup-profile.d.ts +4 -0
- package/dist/cli/interactive/prompts/setup-profile.d.ts.map +1 -0
- package/dist/cli/interactive/prompts/setup-profile.js +20 -0
- package/dist/cli/interactive/prompts/setup-profile.js.map +1 -0
- package/dist/cli/interactive/prompts/target-selection.d.ts +3 -0
- package/dist/cli/interactive/prompts/target-selection.d.ts.map +1 -0
- package/dist/cli/interactive/prompts/target-selection.js +28 -0
- package/dist/cli/interactive/prompts/target-selection.js.map +1 -0
- package/dist/cli/interactive/recovery-notices.d.ts +3 -0
- package/dist/cli/interactive/recovery-notices.d.ts.map +1 -0
- package/dist/cli/interactive/recovery-notices.js +13 -0
- package/dist/cli/interactive/recovery-notices.js.map +1 -0
- package/dist/cli/interactive/renderers/choice-list.d.ts +2 -0
- package/dist/cli/interactive/renderers/choice-list.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/choice-list.js +9 -0
- package/dist/cli/interactive/renderers/choice-list.js.map +1 -0
- package/dist/cli/interactive/renderers/completion-screen.d.ts +4 -0
- package/dist/cli/interactive/renderers/completion-screen.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/completion-screen.js +16 -0
- package/dist/cli/interactive/renderers/completion-screen.js.map +1 -0
- package/dist/cli/interactive/renderers/hub-screen.d.ts +3 -0
- package/dist/cli/interactive/renderers/hub-screen.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/hub-screen.js +12 -0
- package/dist/cli/interactive/renderers/hub-screen.js.map +1 -0
- package/dist/cli/interactive/renderers/progress.d.ts +3 -0
- package/dist/cli/interactive/renderers/progress.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/progress.js +5 -0
- package/dist/cli/interactive/renderers/progress.js.map +1 -0
- package/dist/cli/interactive/renderers/screen-layout.d.ts +9 -0
- package/dist/cli/interactive/renderers/screen-layout.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/screen-layout.js +27 -0
- package/dist/cli/interactive/renderers/screen-layout.js.map +1 -0
- package/dist/cli/interactive/renderers/step-frame.d.ts +3 -0
- package/dist/cli/interactive/renderers/step-frame.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/step-frame.js +7 -0
- package/dist/cli/interactive/renderers/step-frame.js.map +1 -0
- package/dist/cli/interactive/renderers/text-style.d.ts +10 -0
- package/dist/cli/interactive/renderers/text-style.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/text-style.js +52 -0
- package/dist/cli/interactive/renderers/text-style.js.map +1 -0
- package/dist/cli/interactive/renderers/welcome-screen.d.ts +3 -0
- package/dist/cli/interactive/renderers/welcome-screen.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/welcome-screen.js +22 -0
- package/dist/cli/interactive/renderers/welcome-screen.js.map +1 -0
- package/dist/cli/interactive/review-plan.d.ts +19 -0
- package/dist/cli/interactive/review-plan.d.ts.map +1 -0
- package/dist/cli/interactive/review-plan.js +151 -0
- package/dist/cli/interactive/review-plan.js.map +1 -0
- package/dist/cli/interactive/review-summary.d.ts +4 -0
- package/dist/cli/interactive/review-summary.d.ts.map +1 -0
- package/dist/cli/interactive/review-summary.js +20 -0
- package/dist/cli/interactive/review-summary.js.map +1 -0
- package/dist/cli/interactive/session-state.d.ts +35 -0
- package/dist/cli/interactive/session-state.d.ts.map +1 -0
- package/dist/cli/interactive/session-state.js +11 -0
- package/dist/cli/interactive/session-state.js.map +1 -0
- package/dist/cli/interactive/setup-intent.d.ts +32 -0
- package/dist/cli/interactive/setup-intent.d.ts.map +1 -0
- package/dist/cli/interactive/setup-intent.js +54 -0
- package/dist/cli/interactive/setup-intent.js.map +1 -0
- package/dist/cli/interactive/terminal-capabilities.d.ts +20 -0
- package/dist/cli/interactive/terminal-capabilities.d.ts.map +1 -0
- package/dist/cli/interactive/terminal-capabilities.js +69 -0
- package/dist/cli/interactive/terminal-capabilities.js.map +1 -0
- package/dist/domain/capabilities/capability-record.d.ts +25 -0
- package/dist/domain/capabilities/capability-record.d.ts.map +1 -0
- package/dist/domain/capabilities/capability-record.js +2 -0
- package/dist/domain/capabilities/capability-record.js.map +1 -0
- package/dist/domain/capabilities/capability-taxonomy.d.ts +11 -0
- package/dist/domain/capabilities/capability-taxonomy.d.ts.map +1 -0
- package/dist/domain/capabilities/capability-taxonomy.js +2 -0
- package/dist/domain/capabilities/capability-taxonomy.js.map +1 -0
- package/dist/domain/intelligence/instruction-plan.d.ts +26 -0
- package/dist/domain/intelligence/instruction-plan.d.ts.map +1 -0
- package/dist/domain/intelligence/instruction-plan.js +2 -0
- package/dist/domain/intelligence/instruction-plan.js.map +1 -0
- package/dist/domain/intelligence/repo-intelligence.d.ts +1007 -0
- package/dist/domain/intelligence/repo-intelligence.d.ts.map +1 -0
- package/dist/domain/intelligence/repo-intelligence.js +102 -0
- package/dist/domain/intelligence/repo-intelligence.js.map +1 -0
- package/dist/domain/intelligence/repo-map.d.ts +30 -0
- package/dist/domain/intelligence/repo-map.d.ts.map +1 -0
- package/dist/domain/intelligence/repo-map.js +2 -0
- package/dist/domain/intelligence/repo-map.js.map +1 -0
- package/dist/domain/manifests/index.d.ts +154 -0
- package/dist/domain/manifests/index.d.ts.map +1 -0
- package/dist/domain/manifests/index.js +37 -0
- package/dist/domain/manifests/index.js.map +1 -0
- package/dist/domain/observability/benchmark-expectation.d.ts +11 -0
- package/dist/domain/observability/benchmark-expectation.d.ts.map +1 -0
- package/dist/domain/observability/benchmark-expectation.js +2 -0
- package/dist/domain/observability/benchmark-expectation.js.map +1 -0
- package/dist/domain/observability/event.d.ts +17 -0
- package/dist/domain/observability/event.d.ts.map +1 -0
- package/dist/domain/observability/event.js +2 -0
- package/dist/domain/observability/event.js.map +1 -0
- package/dist/domain/observability/summary.d.ts +10 -0
- package/dist/domain/observability/summary.d.ts.map +1 -0
- package/dist/domain/observability/summary.js +2 -0
- package/dist/domain/observability/summary.js.map +1 -0
- package/dist/domain/operations/install-plan.d.ts +85 -0
- package/dist/domain/operations/install-plan.d.ts.map +1 -0
- package/dist/domain/operations/install-plan.js +2 -0
- package/dist/domain/operations/install-plan.js.map +1 -0
- package/dist/domain/parallel/merge-readiness.d.ts +10 -0
- package/dist/domain/parallel/merge-readiness.d.ts.map +1 -0
- package/dist/domain/parallel/merge-readiness.js +2 -0
- package/dist/domain/parallel/merge-readiness.js.map +1 -0
- package/dist/domain/parallel/parallel-plan.d.ts +24 -0
- package/dist/domain/parallel/parallel-plan.d.ts.map +1 -0
- package/dist/domain/parallel/parallel-plan.js +2 -0
- package/dist/domain/parallel/parallel-plan.js.map +1 -0
- package/dist/domain/parallel/shard-state.d.ts +11 -0
- package/dist/domain/parallel/shard-state.d.ts.map +1 -0
- package/dist/domain/parallel/shard-state.js +2 -0
- package/dist/domain/parallel/shard-state.js.map +1 -0
- package/dist/domain/recursive/adr-candidate.d.ts +45 -0
- package/dist/domain/recursive/adr-candidate.d.ts.map +1 -0
- package/dist/domain/recursive/adr-candidate.js +20 -0
- package/dist/domain/recursive/adr-candidate.js.map +1 -0
- package/dist/domain/recursive/asr.d.ts +41 -0
- package/dist/domain/recursive/asr.d.ts.map +1 -0
- package/dist/domain/recursive/asr.js +19 -0
- package/dist/domain/recursive/asr.js.map +1 -0
- package/dist/domain/recursive/budget.d.ts +47 -0
- package/dist/domain/recursive/budget.d.ts.map +1 -0
- package/dist/domain/recursive/budget.js +41 -0
- package/dist/domain/recursive/budget.js.map +1 -0
- package/dist/domain/recursive/session-summary.d.ts +56 -0
- package/dist/domain/recursive/session-summary.d.ts.map +1 -0
- package/dist/domain/recursive/session-summary.js +21 -0
- package/dist/domain/recursive/session-summary.js.map +1 -0
- package/dist/domain/recursive/session.d.ts +181 -0
- package/dist/domain/recursive/session.d.ts.map +1 -0
- package/dist/domain/recursive/session.js +41 -0
- package/dist/domain/recursive/session.js.map +1 -0
- package/dist/domain/recursive/template-registry.d.ts +83 -0
- package/dist/domain/recursive/template-registry.d.ts.map +1 -0
- package/dist/domain/recursive/template-registry.js +28 -0
- package/dist/domain/recursive/template-registry.js.map +1 -0
- package/dist/domain/recursive/trace-event.d.ts +61 -0
- package/dist/domain/recursive/trace-event.d.ts.map +1 -0
- package/dist/domain/recursive/trace-event.js +36 -0
- package/dist/domain/recursive/trace-event.js.map +1 -0
- package/dist/domain/runtime/architecture-significance.d.ts +35 -0
- package/dist/domain/runtime/architecture-significance.d.ts.map +1 -0
- package/dist/domain/runtime/architecture-significance.js +20 -0
- package/dist/domain/runtime/architecture-significance.js.map +1 -0
- package/dist/domain/runtime/decision-coverage-summary.d.ts +29 -0
- package/dist/domain/runtime/decision-coverage-summary.d.ts.map +1 -0
- package/dist/domain/runtime/decision-coverage-summary.js +14 -0
- package/dist/domain/runtime/decision-coverage-summary.js.map +1 -0
- package/dist/domain/runtime/decision-record.d.ts +482 -0
- package/dist/domain/runtime/decision-record.d.ts.map +1 -0
- package/dist/domain/runtime/decision-record.js +78 -0
- package/dist/domain/runtime/decision-record.js.map +1 -0
- package/dist/domain/runtime/file-interest.d.ts +148 -0
- package/dist/domain/runtime/file-interest.d.ts.map +1 -0
- package/dist/domain/runtime/file-interest.js +42 -0
- package/dist/domain/runtime/file-interest.js.map +1 -0
- package/dist/domain/runtime/impact-analysis.d.ts +122 -0
- package/dist/domain/runtime/impact-analysis.d.ts.map +1 -0
- package/dist/domain/runtime/impact-analysis.js +24 -0
- package/dist/domain/runtime/impact-analysis.js.map +1 -0
- package/dist/domain/runtime/task-pack.d.ts +278 -0
- package/dist/domain/runtime/task-pack.d.ts.map +1 -0
- package/dist/domain/runtime/task-pack.js +61 -0
- package/dist/domain/runtime/task-pack.js.map +1 -0
- package/dist/domain/runtime/template-registry.d.ts +100 -0
- package/dist/domain/runtime/template-registry.d.ts.map +1 -0
- package/dist/domain/runtime/template-registry.js +35 -0
- package/dist/domain/runtime/template-registry.js.map +1 -0
- package/dist/domain/runtime/working-memory.d.ts +44 -0
- package/dist/domain/runtime/working-memory.d.ts.map +1 -0
- package/dist/domain/runtime/working-memory.js +19 -0
- package/dist/domain/runtime/working-memory.js.map +1 -0
- package/dist/domain/state/install-state.d.ts +28 -0
- package/dist/domain/state/install-state.d.ts.map +1 -0
- package/dist/domain/state/install-state.js +15 -0
- package/dist/domain/state/install-state.js.map +1 -0
- package/dist/domain/targets/adapter.d.ts +18 -0
- package/dist/domain/targets/adapter.d.ts.map +1 -0
- package/dist/domain/targets/adapter.js +16 -0
- package/dist/domain/targets/adapter.js.map +1 -0
- package/dist/infrastructure/diagnostics/recommendation-reporter.d.ts +3 -0
- package/dist/infrastructure/diagnostics/recommendation-reporter.d.ts.map +1 -0
- package/dist/infrastructure/diagnostics/recommendation-reporter.js +44 -0
- package/dist/infrastructure/diagnostics/recommendation-reporter.js.map +1 -0
- package/dist/infrastructure/diagnostics/reporter.d.ts +6 -0
- package/dist/infrastructure/diagnostics/reporter.d.ts.map +1 -0
- package/dist/infrastructure/diagnostics/reporter.js +35 -0
- package/dist/infrastructure/diagnostics/reporter.js.map +1 -0
- package/dist/infrastructure/filesystem/apply-operation.d.ts +3 -0
- package/dist/infrastructure/filesystem/apply-operation.d.ts.map +1 -0
- package/dist/infrastructure/filesystem/apply-operation.js +75 -0
- package/dist/infrastructure/filesystem/apply-operation.js.map +1 -0
- package/dist/infrastructure/filesystem/normalize-target-path.d.ts +2 -0
- package/dist/infrastructure/filesystem/normalize-target-path.d.ts.map +1 -0
- package/dist/infrastructure/filesystem/normalize-target-path.js +11 -0
- package/dist/infrastructure/filesystem/normalize-target-path.js.map +1 -0
- package/dist/infrastructure/observability/local-metrics-store.d.ts +18 -0
- package/dist/infrastructure/observability/local-metrics-store.d.ts.map +1 -0
- package/dist/infrastructure/observability/local-metrics-store.js +35 -0
- package/dist/infrastructure/observability/local-metrics-store.js.map +1 -0
- package/dist/infrastructure/recursive/session-store.d.ts +45 -0
- package/dist/infrastructure/recursive/session-store.d.ts.map +1 -0
- package/dist/infrastructure/recursive/session-store.js +62 -0
- package/dist/infrastructure/recursive/session-store.js.map +1 -0
- package/dist/infrastructure/recursive/template-loader.d.ts +3 -0
- package/dist/infrastructure/recursive/template-loader.d.ts.map +1 -0
- package/dist/infrastructure/recursive/template-loader.js +19 -0
- package/dist/infrastructure/recursive/template-loader.js.map +1 -0
- package/dist/infrastructure/recursive/trace-logger.d.ts +3 -0
- package/dist/infrastructure/recursive/trace-logger.d.ts.map +1 -0
- package/dist/infrastructure/recursive/trace-logger.js +8 -0
- package/dist/infrastructure/recursive/trace-logger.js.map +1 -0
- package/dist/shared/constants.d.ts +97 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/constants.js +111 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/errors.d.ts +8 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +14 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/fs.d.ts +8 -0
- package/dist/shared/fs.d.ts.map +1 -0
- package/dist/shared/fs.js +35 -0
- package/dist/shared/fs.js.map +1 -0
- package/dist/shared/index.d.ts +5 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +5 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/seeded-knowledge.d.ts +8 -0
- package/dist/shared/seeded-knowledge.d.ts.map +1 -0
- package/dist/shared/seeded-knowledge.js +49 -0
- package/dist/shared/seeded-knowledge.js.map +1 -0
- package/docs/agents.md +45 -0
- package/docs/authoring/engineering-assistant-port.md +108 -0
- package/docs/authoring/enhanced-skill-import.md +89 -0
- package/docs/authoring/skills.md +53 -0
- package/docs/benchmark-scenarios.md +29 -0
- package/docs/catalog/framework-packs.md +22 -0
- package/docs/catalog/frameworks/aspnet-core.md +18 -0
- package/docs/catalog/frameworks/django.md +18 -0
- package/docs/catalog/frameworks/express.md +18 -0
- package/docs/catalog/frameworks/fastapi.md +18 -0
- package/docs/catalog/frameworks/gin.md +18 -0
- package/docs/catalog/frameworks/ktor.md +18 -0
- package/docs/catalog/frameworks/laravel.md +14 -0
- package/docs/catalog/frameworks/nextjs.md +14 -0
- package/docs/catalog/frameworks/react.md +18 -0
- package/docs/catalog/frameworks/spring-boot.md +18 -0
- package/docs/catalog/frameworks/symfony.md +18 -0
- package/docs/catalog/frameworks/vite.md +18 -0
- package/docs/catalog/language-packs.md +39 -0
- package/docs/catalog/languages/cpp.md +25 -0
- package/docs/catalog/languages/dotnet.md +59 -0
- package/docs/catalog/languages/go.md +29 -0
- package/docs/catalog/languages/java.md +60 -0
- package/docs/catalog/languages/kotlin.md +29 -0
- package/docs/catalog/languages/lua.md +59 -0
- package/docs/catalog/languages/perl.md +25 -0
- package/docs/catalog/languages/php.md +30 -0
- package/docs/catalog/languages/powershell.md +59 -0
- package/docs/catalog/languages/python.md +30 -0
- package/docs/catalog/languages/rust.md +25 -0
- package/docs/catalog/languages/shell.md +25 -0
- package/docs/catalog/languages/swift.md +25 -0
- package/docs/catalog/languages/typescript.md +60 -0
- package/docs/commands.md +202 -0
- package/docs/content-architecture.md +3 -0
- package/docs/flow-orchestration/parallel-execution.md +7 -0
- package/docs/flow-orchestration.md +63 -0
- package/docs/generated-artifacts.md +129 -0
- package/docs/hooks/catalog.md +44 -0
- package/docs/install/targets.md +29 -0
- package/docs/installation.md +98 -0
- package/docs/languages.md +31 -0
- package/docs/maintenance-lifecycle.md +62 -0
- package/docs/manifests.md +16 -0
- package/docs/migration/reference-project.md +18 -0
- package/docs/observability/benchmark-authoring.md +6 -0
- package/docs/observability/eval-model.md +7 -0
- package/docs/observability/event-taxonomy.md +12 -0
- package/docs/observability.md +44 -0
- package/docs/pack-authoring.md +19 -0
- package/docs/parallel-worktrees.md +6 -0
- package/docs/profile-guide.md +63 -0
- package/docs/quality-gates.md +56 -0
- package/docs/quickstart.md +41 -0
- package/docs/release-process.md +30 -0
- package/docs/repo-cartography.md +12 -0
- package/docs/style-guides/agent-style-guide.md +21 -0
- package/docs/style-guides/command-style-guide.md +21 -0
- package/docs/style-guides/rule-style-guide.md +20 -0
- package/docs/target-support-matrix.md +73 -0
- package/docs/targets/capability-families.md +13 -0
- package/docs/targets/translation-vs-emulation.md +11 -0
- package/docs/targets.md +20 -0
- package/docs/templates/authoring.md +23 -0
- package/docs/troubleshooting.md +53 -0
- package/docs/versioning-and-migration.md +25 -0
- package/examples/README.md +12 -0
- package/examples/knowledge-bases/README.md +12 -0
- package/examples/production-readiness-demo/README.md +16 -0
- package/hooks/README.md +3 -0
- package/hooks/shared/PostChangeSummary.ps1 +1 -0
- package/hooks/shared/PreChangeQualityGate.ps1 +1 -0
- package/hooks/shared/post-change-summary.sh +3 -0
- package/hooks/shared/pre-change-quality-gate.sh +3 -0
- package/install.ps1 +28 -0
- package/install.sh +24 -0
- package/knowledge-bases/operations/observability-and-evals/README.md +7 -0
- package/knowledge-bases/seeded/README.md +33 -0
- package/knowledge-bases/seeded/dotnet/README.md +18 -0
- package/knowledge-bases/seeded/dotnet/docs/examples-guide.md +15 -0
- package/knowledge-bases/seeded/dotnet/docs/frameworks.md +11 -0
- package/knowledge-bases/seeded/dotnet/docs/overview.md +33 -0
- package/knowledge-bases/seeded/dotnet/docs/review-checklist.md +27 -0
- package/knowledge-bases/seeded/dotnet/examples/01-aspnet-core-crud-api.md +13 -0
- package/knowledge-bases/seeded/dotnet/examples/02-background-worker-with-queue-processing.md +13 -0
- package/knowledge-bases/seeded/dotnet/examples/03-shared-domain-library.md +13 -0
- package/knowledge-bases/seeded/dotnet/examples/04-cli-automation-tool.md +13 -0
- package/knowledge-bases/seeded/dotnet/knowledge-base.json +8 -0
- package/knowledge-bases/seeded/dotnet/legacy-seed/csharp/coding-style.md +72 -0
- package/knowledge-bases/seeded/dotnet/legacy-seed/csharp/hooks.md +25 -0
- package/knowledge-bases/seeded/dotnet/legacy-seed/csharp/patterns.md +50 -0
- package/knowledge-bases/seeded/dotnet/legacy-seed/csharp/security.md +58 -0
- package/knowledge-bases/seeded/dotnet/legacy-seed/csharp/testing.md +46 -0
- package/knowledge-bases/seeded/dotnet/rules/common/agents.md +50 -0
- package/knowledge-bases/seeded/dotnet/rules/common/coding-style.md +48 -0
- package/knowledge-bases/seeded/dotnet/rules/common/development-workflow.md +38 -0
- package/knowledge-bases/seeded/dotnet/rules/common/git-workflow.md +24 -0
- package/knowledge-bases/seeded/dotnet/rules/common/hooks.md +30 -0
- package/knowledge-bases/seeded/dotnet/rules/common/patterns.md +31 -0
- package/knowledge-bases/seeded/dotnet/rules/common/performance.md +55 -0
- package/knowledge-bases/seeded/dotnet/rules/common/security.md +29 -0
- package/knowledge-bases/seeded/dotnet/rules/common/testing.md +29 -0
- package/knowledge-bases/seeded/dotnet/rules/dotnet/coding-style.md +38 -0
- package/knowledge-bases/seeded/dotnet/rules/dotnet/hooks.md +24 -0
- package/knowledge-bases/seeded/dotnet/rules/dotnet/patterns.md +30 -0
- package/knowledge-bases/seeded/dotnet/rules/dotnet/security.md +28 -0
- package/knowledge-bases/seeded/dotnet/rules/dotnet/testing.md +31 -0
- package/knowledge-bases/seeded/java/README.md +18 -0
- package/knowledge-bases/seeded/java/docs/examples-guide.md +15 -0
- package/knowledge-bases/seeded/java/docs/frameworks.md +11 -0
- package/knowledge-bases/seeded/java/docs/overview.md +34 -0
- package/knowledge-bases/seeded/java/docs/review-checklist.md +27 -0
- package/knowledge-bases/seeded/java/examples/01-spring-boot-rest-api.md +13 -0
- package/knowledge-bases/seeded/java/examples/02-event-consumer-service.md +13 -0
- package/knowledge-bases/seeded/java/examples/03-gradle-multi-module-backend.md +13 -0
- package/knowledge-bases/seeded/java/examples/04-library-module-with-strong-domain-tests.md +13 -0
- package/knowledge-bases/seeded/java/knowledge-base.json +8 -0
- package/knowledge-bases/seeded/java/legacy-seed/java/coding-style.md +114 -0
- package/knowledge-bases/seeded/java/legacy-seed/java/hooks.md +18 -0
- package/knowledge-bases/seeded/java/legacy-seed/java/patterns.md +146 -0
- package/knowledge-bases/seeded/java/legacy-seed/java/security.md +100 -0
- package/knowledge-bases/seeded/java/legacy-seed/java/testing.md +131 -0
- package/knowledge-bases/seeded/java/rules/common/agents.md +50 -0
- package/knowledge-bases/seeded/java/rules/common/coding-style.md +48 -0
- package/knowledge-bases/seeded/java/rules/common/development-workflow.md +38 -0
- package/knowledge-bases/seeded/java/rules/common/git-workflow.md +24 -0
- package/knowledge-bases/seeded/java/rules/common/hooks.md +30 -0
- package/knowledge-bases/seeded/java/rules/common/patterns.md +31 -0
- package/knowledge-bases/seeded/java/rules/common/performance.md +55 -0
- package/knowledge-bases/seeded/java/rules/common/security.md +29 -0
- package/knowledge-bases/seeded/java/rules/common/testing.md +29 -0
- package/knowledge-bases/seeded/java/rules/java/coding-style.md +22 -0
- package/knowledge-bases/seeded/java/rules/java/hooks.md +23 -0
- package/knowledge-bases/seeded/java/rules/java/patterns.md +22 -0
- package/knowledge-bases/seeded/java/rules/java/security.md +21 -0
- package/knowledge-bases/seeded/java/rules/java/testing.md +23 -0
- package/knowledge-bases/seeded/lua/README.md +18 -0
- package/knowledge-bases/seeded/lua/docs/examples-guide.md +15 -0
- package/knowledge-bases/seeded/lua/docs/frameworks.md +11 -0
- package/knowledge-bases/seeded/lua/docs/overview.md +30 -0
- package/knowledge-bases/seeded/lua/docs/review-checklist.md +27 -0
- package/knowledge-bases/seeded/lua/examples/01-neovim-plugin.md +13 -0
- package/knowledge-bases/seeded/lua/examples/02-openresty-request-handler.md +13 -0
- package/knowledge-bases/seeded/lua/examples/03-l/303/266ve-gameplay-module.md +13 -0
- package/knowledge-bases/seeded/lua/examples/04-embedded-automation-script.md +13 -0
- package/knowledge-bases/seeded/lua/knowledge-base.json +8 -0
- package/knowledge-bases/seeded/lua/rules/common/agents.md +50 -0
- package/knowledge-bases/seeded/lua/rules/common/coding-style.md +48 -0
- package/knowledge-bases/seeded/lua/rules/common/development-workflow.md +38 -0
- package/knowledge-bases/seeded/lua/rules/common/git-workflow.md +24 -0
- package/knowledge-bases/seeded/lua/rules/common/hooks.md +30 -0
- package/knowledge-bases/seeded/lua/rules/common/patterns.md +31 -0
- package/knowledge-bases/seeded/lua/rules/common/performance.md +55 -0
- package/knowledge-bases/seeded/lua/rules/common/security.md +29 -0
- package/knowledge-bases/seeded/lua/rules/common/testing.md +29 -0
- package/knowledge-bases/seeded/lua/rules/lua/coding-style.md +27 -0
- package/knowledge-bases/seeded/lua/rules/lua/hooks.md +21 -0
- package/knowledge-bases/seeded/lua/rules/lua/patterns.md +23 -0
- package/knowledge-bases/seeded/lua/rules/lua/security.md +20 -0
- package/knowledge-bases/seeded/lua/rules/lua/testing.md +23 -0
- package/knowledge-bases/seeded/powershell/README.md +18 -0
- package/knowledge-bases/seeded/powershell/docs/examples-guide.md +15 -0
- package/knowledge-bases/seeded/powershell/docs/frameworks.md +11 -0
- package/knowledge-bases/seeded/powershell/docs/overview.md +30 -0
- package/knowledge-bases/seeded/powershell/docs/review-checklist.md +27 -0
- package/knowledge-bases/seeded/powershell/examples/01-script-module.md +13 -0
- package/knowledge-bases/seeded/powershell/examples/02-ci-admin-automation-script.md +13 -0
- package/knowledge-bases/seeded/powershell/examples/03-remote-fleet-maintenance-command.md +13 -0
- package/knowledge-bases/seeded/powershell/examples/04-developer-bootstrap-utility.md +13 -0
- package/knowledge-bases/seeded/powershell/knowledge-base.json +8 -0
- package/knowledge-bases/seeded/powershell/rules/common/agents.md +50 -0
- package/knowledge-bases/seeded/powershell/rules/common/coding-style.md +48 -0
- package/knowledge-bases/seeded/powershell/rules/common/development-workflow.md +38 -0
- package/knowledge-bases/seeded/powershell/rules/common/git-workflow.md +24 -0
- package/knowledge-bases/seeded/powershell/rules/common/hooks.md +30 -0
- package/knowledge-bases/seeded/powershell/rules/common/patterns.md +31 -0
- package/knowledge-bases/seeded/powershell/rules/common/performance.md +55 -0
- package/knowledge-bases/seeded/powershell/rules/common/security.md +29 -0
- package/knowledge-bases/seeded/powershell/rules/common/testing.md +29 -0
- package/knowledge-bases/seeded/powershell/rules/powershell/coding-style.md +25 -0
- package/knowledge-bases/seeded/powershell/rules/powershell/hooks.md +24 -0
- package/knowledge-bases/seeded/powershell/rules/powershell/patterns.md +23 -0
- package/knowledge-bases/seeded/powershell/rules/powershell/security.md +23 -0
- package/knowledge-bases/seeded/powershell/rules/powershell/testing.md +24 -0
- package/knowledge-bases/seeded/typescript/README.md +18 -0
- package/knowledge-bases/seeded/typescript/docs/examples-guide.md +15 -0
- package/knowledge-bases/seeded/typescript/docs/frameworks.md +11 -0
- package/knowledge-bases/seeded/typescript/docs/overview.md +34 -0
- package/knowledge-bases/seeded/typescript/docs/review-checklist.md +27 -0
- package/knowledge-bases/seeded/typescript/examples/01-node-api.md +13 -0
- package/knowledge-bases/seeded/typescript/examples/02-react-component-library.md +13 -0
- package/knowledge-bases/seeded/typescript/examples/03-nextjs-app.md +13 -0
- package/knowledge-bases/seeded/typescript/examples/04-monorepo-shared-types-and-validation.md +13 -0
- package/knowledge-bases/seeded/typescript/knowledge-base.json +8 -0
- package/knowledge-bases/seeded/typescript/legacy-seed/typescript/coding-style.md +199 -0
- package/knowledge-bases/seeded/typescript/legacy-seed/typescript/hooks.md +22 -0
- package/knowledge-bases/seeded/typescript/legacy-seed/typescript/patterns.md +52 -0
- package/knowledge-bases/seeded/typescript/legacy-seed/typescript/security.md +28 -0
- package/knowledge-bases/seeded/typescript/legacy-seed/typescript/testing.md +18 -0
- package/knowledge-bases/seeded/typescript/rules/common/agents.md +50 -0
- package/knowledge-bases/seeded/typescript/rules/common/coding-style.md +48 -0
- package/knowledge-bases/seeded/typescript/rules/common/development-workflow.md +38 -0
- package/knowledge-bases/seeded/typescript/rules/common/git-workflow.md +24 -0
- package/knowledge-bases/seeded/typescript/rules/common/hooks.md +30 -0
- package/knowledge-bases/seeded/typescript/rules/common/patterns.md +31 -0
- package/knowledge-bases/seeded/typescript/rules/common/performance.md +55 -0
- package/knowledge-bases/seeded/typescript/rules/common/security.md +29 -0
- package/knowledge-bases/seeded/typescript/rules/common/testing.md +29 -0
- package/knowledge-bases/seeded/typescript/rules/typescript/coding-style.md +30 -0
- package/knowledge-bases/seeded/typescript/rules/typescript/hooks.md +25 -0
- package/knowledge-bases/seeded/typescript/rules/typescript/patterns.md +23 -0
- package/knowledge-bases/seeded/typescript/rules/typescript/security.md +23 -0
- package/knowledge-bases/seeded/typescript/rules/typescript/testing.md +22 -0
- package/knowledge-bases/structured/README.md +3 -0
- package/knowledge-bases/structured/cpp/README.md +3 -0
- package/knowledge-bases/structured/cpp/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/cpp/docs/overview.md +12 -0
- package/knowledge-bases/structured/cpp/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/cpp/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/cpp/knowledge-base.json +13 -0
- package/knowledge-bases/structured/go/README.md +3 -0
- package/knowledge-bases/structured/go/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/go/docs/overview.md +12 -0
- package/knowledge-bases/structured/go/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/go/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/go/knowledge-base.json +13 -0
- package/knowledge-bases/structured/kotlin/README.md +3 -0
- package/knowledge-bases/structured/kotlin/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/kotlin/docs/overview.md +12 -0
- package/knowledge-bases/structured/kotlin/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/kotlin/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/kotlin/knowledge-base.json +13 -0
- package/knowledge-bases/structured/perl/README.md +3 -0
- package/knowledge-bases/structured/perl/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/perl/docs/overview.md +12 -0
- package/knowledge-bases/structured/perl/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/perl/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/perl/knowledge-base.json +13 -0
- package/knowledge-bases/structured/php/README.md +3 -0
- package/knowledge-bases/structured/php/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/php/docs/overview.md +12 -0
- package/knowledge-bases/structured/php/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/php/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/php/knowledge-base.json +13 -0
- package/knowledge-bases/structured/python/README.md +3 -0
- package/knowledge-bases/structured/python/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/python/docs/overview.md +12 -0
- package/knowledge-bases/structured/python/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/python/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/python/knowledge-base.json +13 -0
- package/knowledge-bases/structured/rust/README.md +3 -0
- package/knowledge-bases/structured/rust/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/rust/docs/overview.md +12 -0
- package/knowledge-bases/structured/rust/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/rust/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/rust/knowledge-base.json +13 -0
- package/knowledge-bases/structured/shell/README.md +3 -0
- package/knowledge-bases/structured/shell/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/shell/docs/overview.md +12 -0
- package/knowledge-bases/structured/shell/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/shell/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/shell/knowledge-base.json +13 -0
- package/knowledge-bases/structured/swift/README.md +3 -0
- package/knowledge-bases/structured/swift/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/swift/docs/overview.md +12 -0
- package/knowledge-bases/structured/swift/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/swift/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/swift/knowledge-base.json +13 -0
- package/manifests/bundles/core.json +384 -0
- package/manifests/bundles/frameworks.json +196 -0
- package/manifests/bundles/languages-seeded.json +136 -0
- package/manifests/bundles/languages-v1.json +317 -0
- package/manifests/catalog/capability-taxonomy.json +47 -0
- package/manifests/catalog/compatibility-matrix.json +4259 -0
- package/manifests/catalog/engineering-assistant-import-inventory.json +215 -0
- package/manifests/catalog/enhanced-skill-import-inventory.json +402 -0
- package/manifests/catalog/flow-artifacts.json +324 -0
- package/manifests/catalog/framework-assets.json +124 -0
- package/manifests/catalog/harness-capability-matrix.json +429 -0
- package/manifests/catalog/index.json +56 -0
- package/manifests/catalog/language-assets.json +616 -0
- package/manifests/catalog/package-surface.json +426 -0
- package/manifests/catalog/seeded-knowledge-files.json +1094 -0
- package/manifests/hooks/index.json +70 -0
- package/manifests/profiles/ai-runtime.json +24 -0
- package/manifests/profiles/core.json +24 -0
- package/manifests/profiles/developer.json +24 -0
- package/manifests/profiles/game-dev-native.json +24 -0
- package/manifests/profiles/legacy-modernization.json +24 -0
- package/manifests/profiles/rapid-prototyping.json +24 -0
- package/manifests/profiles/release-manager.json +24 -0
- package/manifests/profiles/research-first.json +24 -0
- package/manifests/profiles/reviewer.json +24 -0
- package/manifests/profiles/security.json +24 -0
- package/manifests/targets/core.json +125 -0
- package/mcp/README.md +3 -0
- package/mcp/servers/context7.codex.toml +3 -0
- package/mcp/servers/context7.md +3 -0
- package/mcp/servers/openai-developer-docs.codex.toml +3 -0
- package/mcp/servers/openai-developer-docs.md +3 -0
- package/mcp/servers/playwright.codex.toml +3 -0
- package/mcp/servers/playwright.md +3 -0
- package/mcp/servers/semgrep.md +3 -0
- package/package.json +126 -0
- package/profiles/README.md +3 -0
- package/profiles/claude-code.md +3 -0
- package/profiles/codex.md +3 -0
- package/profiles/core.md +3 -0
- package/profiles/developer.md +3 -0
- package/profiles/release-manager.md +3 -0
- package/rules/README.md +58 -0
- package/rules/common/README.md +37 -0
- package/rules/common/agents.md +50 -0
- package/rules/common/coding-style.md +48 -0
- package/rules/common/development-workflow.md +38 -0
- package/rules/common/git-workflow.md +24 -0
- package/rules/common/hooks.md +30 -0
- package/rules/common/patterns.md +31 -0
- package/rules/common/performance.md +55 -0
- package/rules/common/security.md +29 -0
- package/rules/common/testing.md +29 -0
- package/rules/cpp/README.md +19 -0
- package/rules/cpp/coding-style.md +3 -0
- package/rules/cpp/patterns.md +3 -0
- package/rules/cpp/security.md +3 -0
- package/rules/cpp/testing.md +3 -0
- package/rules/cpp/tooling.md +3 -0
- package/rules/dotnet/README.md +41 -0
- package/rules/dotnet/coding-style.md +38 -0
- package/rules/dotnet/hooks.md +24 -0
- package/rules/dotnet/patterns.md +30 -0
- package/rules/dotnet/security.md +28 -0
- package/rules/dotnet/testing.md +31 -0
- package/rules/golang/README.md +19 -0
- package/rules/golang/coding-style.md +3 -0
- package/rules/golang/patterns.md +3 -0
- package/rules/golang/security.md +3 -0
- package/rules/golang/testing.md +3 -0
- package/rules/golang/tooling.md +3 -0
- package/rules/java/README.md +41 -0
- package/rules/java/coding-style.md +22 -0
- package/rules/java/hooks.md +23 -0
- package/rules/java/patterns.md +22 -0
- package/rules/java/security.md +21 -0
- package/rules/java/testing.md +23 -0
- package/rules/kotlin/README.md +19 -0
- package/rules/kotlin/coding-style.md +3 -0
- package/rules/kotlin/patterns.md +3 -0
- package/rules/kotlin/security.md +3 -0
- package/rules/kotlin/testing.md +3 -0
- package/rules/kotlin/tooling.md +3 -0
- package/rules/lua/README.md +41 -0
- package/rules/lua/coding-style.md +27 -0
- package/rules/lua/hooks.md +21 -0
- package/rules/lua/patterns.md +23 -0
- package/rules/lua/security.md +20 -0
- package/rules/lua/testing.md +23 -0
- package/rules/perl/README.md +19 -0
- package/rules/perl/coding-style.md +3 -0
- package/rules/perl/patterns.md +3 -0
- package/rules/perl/security.md +3 -0
- package/rules/perl/testing.md +3 -0
- package/rules/perl/tooling.md +3 -0
- package/rules/php/README.md +19 -0
- package/rules/php/coding-style.md +3 -0
- package/rules/php/patterns.md +3 -0
- package/rules/php/security.md +3 -0
- package/rules/php/testing.md +3 -0
- package/rules/php/tooling.md +3 -0
- package/rules/powershell/README.md +41 -0
- package/rules/powershell/coding-style.md +25 -0
- package/rules/powershell/hooks.md +24 -0
- package/rules/powershell/patterns.md +23 -0
- package/rules/powershell/security.md +23 -0
- package/rules/powershell/testing.md +24 -0
- package/rules/python/README.md +19 -0
- package/rules/python/coding-style.md +3 -0
- package/rules/python/patterns.md +3 -0
- package/rules/python/security.md +3 -0
- package/rules/python/testing.md +3 -0
- package/rules/python/tooling.md +3 -0
- package/rules/rust/README.md +19 -0
- package/rules/rust/coding-style.md +3 -0
- package/rules/rust/patterns.md +3 -0
- package/rules/rust/security.md +3 -0
- package/rules/rust/testing.md +3 -0
- package/rules/rust/tooling.md +3 -0
- package/rules/shell/README.md +19 -0
- package/rules/shell/coding-style.md +3 -0
- package/rules/shell/patterns.md +3 -0
- package/rules/shell/security.md +3 -0
- package/rules/shell/testing.md +3 -0
- package/rules/shell/tooling.md +3 -0
- package/rules/swift/README.md +19 -0
- package/rules/swift/coding-style.md +3 -0
- package/rules/swift/patterns.md +3 -0
- package/rules/swift/security.md +3 -0
- package/rules/swift/testing.md +3 -0
- package/rules/swift/tooling.md +3 -0
- package/rules/typescript/README.md +41 -0
- package/rules/typescript/coding-style.md +30 -0
- package/rules/typescript/hooks.md +25 -0
- package/rules/typescript/patterns.md +23 -0
- package/rules/typescript/security.md +23 -0
- package/rules/typescript/testing.md +22 -0
- package/schemas/content/content-metadata.schema.json +100 -0
- package/schemas/hooks/hook.schema.json +57 -0
- package/schemas/manifests/catalog.schema.json +22 -0
- package/schemas/manifests/harness-capability-matrix.schema.json +127 -0
- package/schemas/manifests/package-surface.schema.json +63 -0
- package/schemas/manifests/seeded-knowledge-files.schema.json +69 -0
- package/schemas/runtime/architecture-significance.schema.json +45 -0
- package/schemas/runtime/benchmark-expectation.schema.json +33 -0
- package/schemas/runtime/decision-coverage-summary.schema.json +46 -0
- package/schemas/runtime/decision-record.schema.json +266 -0
- package/schemas/runtime/file-interest.schema.json +78 -0
- package/schemas/runtime/flow-state.schema.json +39 -0
- package/schemas/runtime/impact-analysis.schema.json +83 -0
- package/schemas/runtime/instruction-plan.schema.json +63 -0
- package/schemas/runtime/observability-event.schema.json +40 -0
- package/schemas/runtime/observability-summary.schema.json +32 -0
- package/schemas/runtime/recursive-adr-candidate.schema.json +57 -0
- package/schemas/runtime/recursive-budget.schema.json +40 -0
- package/schemas/runtime/recursive-session-summary.schema.json +49 -0
- package/schemas/runtime/recursive-session.schema.json +65 -0
- package/schemas/runtime/recursive-trace-event.schema.json +43 -0
- package/schemas/runtime/repo-map.schema.json +65 -0
- package/schemas/runtime/task-pack.schema.json +172 -0
- package/schemas/runtime/working-memory.schema.json +52 -0
- package/schemas/runtime/worktree-plan.schema.json +72 -0
- package/schemas/runtime/worktree-state.schema.json +41 -0
- package/schemas/templates/recursive-template-registry.schema.json +43 -0
- package/schemas/templates/runtime-template-registry.schema.json +55 -0
- package/schemas/templates/template-catalog.schema.json +38 -0
- package/scripts/ci/capability-matrix-shared.mjs +263 -0
- package/scripts/ci/generate-compatibility-matrix.mjs +189 -0
- package/scripts/ci/generate-target-support-docs.mjs +27 -0
- package/scripts/ci/release-smoke.mjs +121 -0
- package/scripts/ci/smoke-runner.mjs +90 -0
- package/scripts/ci/validate-capability-matrix.mjs +30 -0
- package/scripts/ci/validate-content-metadata.mjs +188 -0
- package/scripts/ci/validate-doc-command-alignment.mjs +146 -0
- package/scripts/ci/validate-framework-coverage.mjs +52 -0
- package/scripts/ci/validate-generated-sync.mjs +122 -0
- package/scripts/ci/validate-manifest-runtime-consistency.mjs +134 -0
- package/scripts/ci/validate-no-placeholders.mjs +86 -0
- package/scripts/ci/validate-pack-dependencies.mjs +78 -0
- package/scripts/ci/validate-packed-install-surface.mjs +77 -0
- package/scripts/ci/validate-seeded-knowledge-coverage.mjs +89 -0
- package/scripts/ci/validate-skill-depth.mjs +88 -0
- package/scripts/codex/apply-home-config.mjs +39 -0
- package/scripts/intelligence/cartograph-repo.mjs +15 -0
- package/scripts/intelligence/classify-boundaries.mjs +15 -0
- package/scripts/intelligence/detect-frameworks.mjs +16 -0
- package/scripts/intelligence/scan-repo.mjs +16 -0
- package/scripts/intelligence/score-recommendations.mjs +16 -0
- package/scripts/intelligence/shared/cartography.mjs +129 -0
- package/scripts/intelligence/shared.mjs +660 -0
- package/scripts/intelligence/synthesize-instructions.mjs +90 -0
- package/scripts/knowledge/import-pack.mjs +56 -0
- package/scripts/knowledge/normalize-pack.mjs +49 -0
- package/scripts/knowledge/report-coverage.mjs +82 -0
- package/scripts/knowledge/report-drift.mjs +67 -0
- package/scripts/runtime/check-merge-readiness.mjs +44 -0
- package/scripts/runtime/check-parallel-status.mjs +39 -0
- package/scripts/runtime/create-parallel-plan.mjs +61 -0
- package/scripts/runtime/flow-status.mjs +114 -0
- package/scripts/runtime/record-event.mjs +44 -0
- package/scripts/runtime/recursive-plan.mjs +25 -0
- package/scripts/runtime/render-observability-report.mjs +50 -0
- package/scripts/runtime/report-effectiveness.mjs +35 -0
- package/scripts/runtime/summarize-observability.mjs +57 -0
- package/scripts/templates/README.md +40 -0
- package/scripts/templates/config/required-sections.json +37 -0
- package/scripts/templates/powershell/Check-TemplateFrontmatter.ps1 +54 -0
- package/scripts/templates/powershell/Check-TemplateLinks.ps1 +22 -0
- package/scripts/templates/powershell/Get-MissingTemplateSections.ps1 +21 -0
- package/scripts/templates/powershell/New-TemplateIndex.ps1 +19 -0
- package/scripts/templates/powershell/Test-WorkflowContracts.ps1 +26 -0
- package/scripts/templates/shell/check-template-frontmatter.sh +39 -0
- package/scripts/templates/shell/check-template-links.sh +25 -0
- package/scripts/templates/shell/generate-template-index.sh +17 -0
- package/scripts/templates/shell/list-missing-template-sections.sh +36 -0
- package/scripts/templates/shell/verify-workflow-contracts.sh +21 -0
- package/skills/README.md +94 -0
- package/skills/api-contract-review/SKILL.md +56 -0
- package/skills/api-contract-review/references/event-and-async-contracts.md +16 -0
- package/skills/api-contract-review/references/examples.md +15 -0
- package/skills/api-contract-review/references/http-contract-checklist.md +24 -0
- package/skills/api-contract-review/references/protobuf-and-buf.md +12 -0
- package/skills/api-contract-review/references/review-template.md +19 -0
- package/skills/api-contract-review/references/schema-compatibility.md +20 -0
- package/skills/api-contract-review/references/style-and-linting.md +15 -0
- package/skills/architecture-decision-records/SKILL.md +53 -0
- package/skills/architecture-decision-records/references/adr-anti-patterns.md +10 -0
- package/skills/architecture-decision-records/references/adr-template.md +31 -0
- package/skills/architecture-decision-records/references/decision-rubric.md +22 -0
- package/skills/architecture-decision-records/references/examples.md +15 -0
- package/skills/architecture-decision-records/references/madr-style-guide.md +17 -0
- package/skills/cloud-architect/SKILL.md +61 -0
- package/skills/cloud-architect/references/agent-patterns.md +23 -0
- package/skills/cloud-architect/references/debugging-playbook.md +24 -0
- package/skills/cloud-architect/references/distributed-systems.md +13 -0
- package/skills/cloud-architect/references/examples.md +19 -0
- package/skills/cloud-architect/references/output-templates.md +35 -0
- package/skills/cloud-architect/references/platform-and-deployment.md +13 -0
- package/skills/cloud-architect/references/reliability-security-cost.md +17 -0
- package/skills/cloud-architect/references/repo-exploration.md +42 -0
- package/skills/cpp-engineering/SKILL.md +43 -0
- package/skills/db-migration-review/SKILL.md +56 -0
- package/skills/db-migration-review/references/engine-specific-hotspots.md +21 -0
- package/skills/db-migration-review/references/examples.md +16 -0
- package/skills/db-migration-review/references/expand-contract.md +19 -0
- package/skills/db-migration-review/references/review-template.md +25 -0
- package/skills/db-migration-review/references/risk-taxonomy.md +30 -0
- package/skills/db-migration-review/references/rollout-and-backfill.md +23 -0
- package/skills/db-migration-review/references/tooling-signals.md +21 -0
- package/skills/dependency-upgrade-safety/SKILL.md +36 -0
- package/skills/documentation-lookup/SKILL.md +45 -0
- package/skills/documentation-lookup/references/source-priority.md +6 -0
- package/skills/dotnet-engineering/SKILL.md +76 -0
- package/skills/dotnet-engineering/references/agent-patterns.md +30 -0
- package/skills/dotnet-engineering/references/architecture-and-di.md +28 -0
- package/skills/dotnet-engineering/references/aspnet-and-efcore.md +22 -0
- package/skills/dotnet-engineering/references/cloud-native-and-aspire.md +21 -0
- package/skills/dotnet-engineering/references/debugging-playbook.md +21 -0
- package/skills/dotnet-engineering/references/examples.md +22 -0
- package/skills/dotnet-engineering/references/output-templates.md +33 -0
- package/skills/dotnet-engineering/references/repo-exploration.md +38 -0
- package/skills/dotnet-engineering/references/testing-and-performance.md +25 -0
- package/skills/engineering-assistant/SKILL.md +59 -0
- package/skills/engineering-assistant/references/architecture.md +47 -0
- package/skills/engineering-assistant/references/change-discipline.md +37 -0
- package/skills/engineering-assistant/references/project-notes.md +36 -0
- package/skills/engineering-assistant/references/skill-composition.md +33 -0
- package/skills/engineering-assistant/references/solid-and-patterns.md +34 -0
- package/skills/go-engineering/SKILL.md +43 -0
- package/skills/incident-triage/SKILL.md +36 -0
- package/skills/java-engineering/SKILL.md +48 -0
- package/skills/java-engineering/references/agent-patterns.md +23 -0
- package/skills/java-engineering/references/build-and-structure.md +14 -0
- package/skills/java-engineering/references/debugging-playbook.md +24 -0
- package/skills/java-engineering/references/examples.md +15 -0
- package/skills/java-engineering/references/output-templates.md +35 -0
- package/skills/java-engineering/references/repo-exploration.md +42 -0
- package/skills/java-engineering/references/spring-patterns.md +12 -0
- package/skills/java-engineering/references/testing-concurrency-performance.md +11 -0
- package/skills/javascript-engineering/SKILL.md +66 -0
- package/skills/javascript-engineering/references/agent-patterns.md +22 -0
- package/skills/javascript-engineering/references/browser-and-bundler-patterns.md +14 -0
- package/skills/javascript-engineering/references/debugging-playbook.md +17 -0
- package/skills/javascript-engineering/references/ecosystem-guide.md +19 -0
- package/skills/javascript-engineering/references/examples.md +15 -0
- package/skills/javascript-engineering/references/node-service-patterns.md +15 -0
- package/skills/javascript-engineering/references/output-templates.md +17 -0
- package/skills/javascript-engineering/references/package-contracts.md +12 -0
- package/skills/javascript-engineering/references/repo-exploration.md +24 -0
- package/skills/javascript-engineering/references/testing-and-debugging.md +13 -0
- package/skills/kotlin-engineering/SKILL.md +43 -0
- package/skills/lua-engineering/SKILL.md +78 -0
- package/skills/lua-engineering/references/agent-patterns.md +22 -0
- package/skills/lua-engineering/references/debugging-and-testing.md +13 -0
- package/skills/lua-engineering/references/debugging-playbook.md +17 -0
- package/skills/lua-engineering/references/examples.md +15 -0
- package/skills/lua-engineering/references/game-and-addon-patterns.md +15 -0
- package/skills/lua-engineering/references/language-idioms.md +16 -0
- package/skills/lua-engineering/references/neovim-and-editor-patterns.md +17 -0
- package/skills/lua-engineering/references/openresty-patterns.md +15 -0
- package/skills/lua-engineering/references/output-templates.md +17 -0
- package/skills/lua-engineering/references/repo-exploration.md +25 -0
- package/skills/lua-engineering/references/runtime-profiles.md +12 -0
- package/skills/lua-engineering/references/tooling-and-quality.md +16 -0
- package/skills/observability-and-eval/SKILL.md +6 -0
- package/skills/observability-setup/SKILL.md +35 -0
- package/skills/parallel-worktree-supervisor/SKILL.md +55 -0
- package/skills/parallel-worktree-supervisor/references/examples.md +14 -0
- package/skills/parallel-worktree-supervisor/references/merge-readiness.md +15 -0
- package/skills/parallel-worktree-supervisor/references/output-template.md +16 -0
- package/skills/parallel-worktree-supervisor/references/stacked-diffs-and-review.md +17 -0
- package/skills/parallel-worktree-supervisor/references/task-sharding-rules.md +22 -0
- package/skills/parallel-worktree-supervisor/references/worktree-operations.md +16 -0
- package/skills/performance-profiling/SKILL.md +36 -0
- package/skills/perl-engineering/SKILL.md +43 -0
- package/skills/php-engineering/SKILL.md +43 -0
- package/skills/powershell-engineering/SKILL.md +48 -0
- package/skills/powershell-engineering/references/agent-patterns.md +23 -0
- package/skills/powershell-engineering/references/debugging-playbook.md +24 -0
- package/skills/powershell-engineering/references/examples.md +17 -0
- package/skills/powershell-engineering/references/output-templates.md +35 -0
- package/skills/powershell-engineering/references/remoting-and-ops.md +12 -0
- package/skills/powershell-engineering/references/repo-exploration.md +42 -0
- package/skills/powershell-engineering/references/scripting-and-modules.md +14 -0
- package/skills/powershell-engineering/references/testing-and-ci.md +11 -0
- package/skills/pr-triage-and-summary/SKILL.md +35 -0
- package/skills/python-engineering/SKILL.md +56 -0
- package/skills/python-engineering/references/agent-patterns.md +23 -0
- package/skills/python-engineering/references/async-and-concurrency.md +19 -0
- package/skills/python-engineering/references/debugging-playbook.md +24 -0
- package/skills/python-engineering/references/ecosystem-guide.md +32 -0
- package/skills/python-engineering/references/examples.md +19 -0
- package/skills/python-engineering/references/output-templates.md +35 -0
- package/skills/python-engineering/references/repo-exploration.md +42 -0
- package/skills/python-engineering/references/testing-and-quality.md +16 -0
- package/skills/release-readiness/SKILL.md +45 -0
- package/skills/release-readiness/references/release-report-template.md +7 -0
- package/skills/repo-cartographer/SKILL.md +10 -0
- package/skills/repo-modernization/SKILL.md +56 -0
- package/skills/repo-modernization/references/automation-candidates.md +19 -0
- package/skills/repo-modernization/references/dependency-and-build-modernization.md +16 -0
- package/skills/repo-modernization/references/examples.md +15 -0
- package/skills/repo-modernization/references/modernization-layers.md +21 -0
- package/skills/repo-modernization/references/roadmap-template.md +25 -0
- package/skills/repo-modernization/references/safety-rails.md +15 -0
- package/skills/repo-modernization/references/strangler-and-seams.md +18 -0
- package/skills/repo-onboarding/SKILL.md +56 -0
- package/skills/repo-onboarding/references/command-discovery.md +13 -0
- package/skills/repo-onboarding/references/discovery-checklist.md +24 -0
- package/skills/repo-onboarding/references/examples.md +13 -0
- package/skills/repo-onboarding/references/monorepo-signals.md +17 -0
- package/skills/repo-onboarding/references/output-template.md +26 -0
- package/skills/repo-onboarding/references/ownership-and-health-signals.md +21 -0
- package/skills/repo-onboarding/references/repo-archetypes.md +13 -0
- package/skills/rust-engineering/SKILL.md +43 -0
- package/skills/security-scan/SKILL.md +45 -0
- package/skills/security-scan/references/review-checklist.md +7 -0
- package/skills/shell-engineering/SKILL.md +43 -0
- package/skills/speckit-analyze/SKILL.md +190 -0
- package/skills/speckit-checklist/SKILL.md +301 -0
- package/skills/speckit-clarify/SKILL.md +183 -0
- package/skills/speckit-constitution/SKILL.md +86 -0
- package/skills/speckit-implement/SKILL.md +204 -0
- package/skills/speckit-plan/SKILL.md +151 -0
- package/skills/speckit-specify/SKILL.md +304 -0
- package/skills/speckit-tasks/SKILL.md +197 -0
- package/skills/speckit-taskstoissues/SKILL.md +35 -0
- package/skills/swift-engineering/SKILL.md +43 -0
- package/skills/test-strategy-and-coverage/SKILL.md +35 -0
- package/skills/typescript-engineering/SKILL.md +77 -0
- package/skills/typescript-engineering/references/agent-patterns.md +23 -0
- package/skills/typescript-engineering/references/debugging-playbook.md +21 -0
- package/skills/typescript-engineering/references/examples.md +22 -0
- package/skills/typescript-engineering/references/frontend-and-backend-patterns.md +19 -0
- package/skills/typescript-engineering/references/output-templates.md +25 -0
- package/skills/typescript-engineering/references/repo-exploration.md +25 -0
- package/skills/typescript-engineering/references/runtime-validation-and-boundaries.md +20 -0
- package/skills/typescript-engineering/references/tsconfig-and-build.md +25 -0
- package/skills/typescript-engineering/references/type-system-patterns.md +20 -0
- package/skills/typescript-engineering/references/workspace-and-monorepo.md +23 -0
- package/targets/claude-code/adapter.json +56 -0
- package/targets/claude-code/runtime/.claude/CLAUDE.md +3 -0
- package/targets/claude-code/runtime/.claude/agents/documentation-lookup.md +3 -0
- package/targets/claude-code/runtime/.claude/agents/release-readiness.md +3 -0
- package/targets/claude-code/runtime/.claude/agents/repo-onboarding.md +3 -0
- package/targets/claude-code/runtime/.claude/agents/security-scan.md +3 -0
- package/targets/claude-code/runtime/.claude/hooks/post-tool-use.sh +4 -0
- package/targets/claude-code/runtime/.claude/hooks/pre-tool-use.sh +4 -0
- package/targets/claude-code/runtime/.claude/settings.json +26 -0
- package/targets/codex/adapter.json +56 -0
- package/targets/codex/runtime/.codex/README.md +3 -0
- package/targets/codex/runtime/.codex/config.toml +15 -0
- package/targets/cursor/adapter.json +56 -0
- package/targets/opencode/adapter.json +56 -0
- package/templates/instructions/cursor-rule-template.mdc +7 -0
- package/templates/instructions/root-agents-template.md +88 -0
- package/templates/instructions/scoped-agents-template.md +90 -0
- package/templates/tasks/fix-bug.md +93 -0
- package/templates/tasks/implement-feature.md +95 -0
- package/templates/workflows/implement-cpp-change.md +175 -0
- package/templates/workflows/implement-dotnet-change.md +175 -0
- package/templates/workflows/implement-go-change.md +175 -0
- package/templates/workflows/implement-java-change.md +175 -0
- package/templates/workflows/implement-kotlin-change.md +175 -0
- package/templates/workflows/implement-lua-change.md +175 -0
- package/templates/workflows/implement-perl-change.md +175 -0
- package/templates/workflows/implement-php-change.md +175 -0
- package/templates/workflows/implement-powershell-change.md +175 -0
- package/templates/workflows/implement-python-change.md +175 -0
- package/templates/workflows/implement-rust-change.md +175 -0
- package/templates/workflows/implement-shell-change.md +175 -0
- package/templates/workflows/implement-swift-change.md +175 -0
- package/templates/workflows/implement-typescript-change.md +176 -0
- package/templates/workflows/parallel-implement-and-merge.md +191 -0
- package/templates/workflows/research-plan-implement-validate.md +187 -0
- package/templates/workflows/triage-reproduce-fix-verify.md +167 -0
|
@@ -0,0 +1,660 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
|
|
5
|
+
const IGNORED_DIRS = new Set([
|
|
6
|
+
".git",
|
|
7
|
+
".hforge",
|
|
8
|
+
".next",
|
|
9
|
+
".nuxt",
|
|
10
|
+
".specify",
|
|
11
|
+
".turbo",
|
|
12
|
+
".venv",
|
|
13
|
+
"build",
|
|
14
|
+
"coverage",
|
|
15
|
+
"dist",
|
|
16
|
+
"node_modules",
|
|
17
|
+
"vendor"
|
|
18
|
+
]);
|
|
19
|
+
|
|
20
|
+
const PACKAGE_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
21
|
+
|
|
22
|
+
function bump(map, key, evidence) {
|
|
23
|
+
const current = map.get(key) ?? { count: 0, evidence: [] };
|
|
24
|
+
current.count += 1;
|
|
25
|
+
if (evidence && current.evidence.length < 5 && !current.evidence.includes(evidence)) {
|
|
26
|
+
current.evidence.push(evidence);
|
|
27
|
+
}
|
|
28
|
+
map.set(key, current);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function createSignal(id, evidence, confidence = 0.8) {
|
|
32
|
+
return {
|
|
33
|
+
id,
|
|
34
|
+
confidence,
|
|
35
|
+
evidence: evidence.slice(0, 5)
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function sortSignals(values) {
|
|
40
|
+
return [...values].sort((left, right) => {
|
|
41
|
+
if (right.confidence !== left.confidence) {
|
|
42
|
+
return right.confidence - left.confidence;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return left.id.localeCompare(right.id);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async function exists(targetPath) {
|
|
50
|
+
try {
|
|
51
|
+
await fs.access(targetPath);
|
|
52
|
+
return true;
|
|
53
|
+
} catch {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async function readTextIfPresent(targetPath) {
|
|
59
|
+
if (!(await exists(targetPath))) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return fs.readFile(targetPath, "utf8");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async function readJsonIfPresent(targetPath) {
|
|
67
|
+
const content = await readTextIfPresent(targetPath);
|
|
68
|
+
if (!content) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
try {
|
|
73
|
+
return JSON.parse(content);
|
|
74
|
+
} catch {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
async function walk(root, visit, base = root) {
|
|
80
|
+
let entries = [];
|
|
81
|
+
try {
|
|
82
|
+
entries = await fs.readdir(root, { withFileTypes: true });
|
|
83
|
+
} catch {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
for (const entry of entries) {
|
|
88
|
+
const absolutePath = path.join(root, entry.name);
|
|
89
|
+
const relativePath = path.relative(base, absolutePath).replaceAll("\\", "/");
|
|
90
|
+
|
|
91
|
+
if (entry.isDirectory()) {
|
|
92
|
+
if (IGNORED_DIRS.has(entry.name)) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
await walk(absolutePath, visit, base);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
visit(relativePath, absolutePath);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function detectLanguages(files) {
|
|
105
|
+
const languageCounts = new Map();
|
|
106
|
+
|
|
107
|
+
for (const file of files) {
|
|
108
|
+
if (/\.(ts|tsx|js|jsx)$/i.test(file)) {
|
|
109
|
+
bump(languageCounts, "typescript", file);
|
|
110
|
+
}
|
|
111
|
+
if (/\.py$/i.test(file)) {
|
|
112
|
+
bump(languageCounts, "python", file);
|
|
113
|
+
}
|
|
114
|
+
if (/\.go$/i.test(file)) {
|
|
115
|
+
bump(languageCounts, "go", file);
|
|
116
|
+
}
|
|
117
|
+
if (/\.java$/i.test(file)) {
|
|
118
|
+
bump(languageCounts, "java", file);
|
|
119
|
+
}
|
|
120
|
+
if (/\.(kt|kts)$/i.test(file)) {
|
|
121
|
+
bump(languageCounts, "kotlin", file);
|
|
122
|
+
}
|
|
123
|
+
if (/\.rs$/i.test(file)) {
|
|
124
|
+
bump(languageCounts, "rust", file);
|
|
125
|
+
}
|
|
126
|
+
if (/\.(cpp|cxx|cc|hpp|hh|h)$/i.test(file)) {
|
|
127
|
+
bump(languageCounts, "cpp", file);
|
|
128
|
+
}
|
|
129
|
+
if (/\.php$/i.test(file)) {
|
|
130
|
+
bump(languageCounts, "php", file);
|
|
131
|
+
}
|
|
132
|
+
if (/\.(pl|pm)$/i.test(file)) {
|
|
133
|
+
bump(languageCounts, "perl", file);
|
|
134
|
+
}
|
|
135
|
+
if (/\.swift$/i.test(file)) {
|
|
136
|
+
bump(languageCounts, "swift", file);
|
|
137
|
+
}
|
|
138
|
+
if (/\.(sh|bash|zsh)$/i.test(file)) {
|
|
139
|
+
bump(languageCounts, "shell", file);
|
|
140
|
+
}
|
|
141
|
+
if (/\.(cs|csproj|sln)$/i.test(file)) {
|
|
142
|
+
bump(languageCounts, "dotnet", file);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const dominantLanguages = [...languageCounts.entries()]
|
|
147
|
+
.sort((left, right) => right[1].count - left[1].count)
|
|
148
|
+
.map(([id, value], index, values) => ({
|
|
149
|
+
id,
|
|
150
|
+
count: value.count,
|
|
151
|
+
confidence: Number((value.count / (values[0]?.[1].count ?? value.count)).toFixed(2)),
|
|
152
|
+
evidence: value.evidence
|
|
153
|
+
}));
|
|
154
|
+
|
|
155
|
+
return { dominantLanguages, languageCounts };
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function detectBuildSignals(files, packageJson) {
|
|
159
|
+
const signals = [];
|
|
160
|
+
const fileSet = new Set(files);
|
|
161
|
+
|
|
162
|
+
if (packageJson) {
|
|
163
|
+
const packageManager = typeof packageJson.packageManager === "string" ? packageJson.packageManager.split("@")[0] : "npm";
|
|
164
|
+
signals.push(createSignal(`package-manager:${packageManager}`, ["package.json"], 0.95));
|
|
165
|
+
|
|
166
|
+
if (packageJson.workspaces) {
|
|
167
|
+
signals.push(createSignal("workspace:package-json", ["package.json#workspaces"], 0.95));
|
|
168
|
+
}
|
|
169
|
+
if (packageJson.scripts?.build) {
|
|
170
|
+
signals.push(createSignal("build:package-json-script", ["package.json#scripts.build"], 0.85));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const directBuildMarkers = [
|
|
175
|
+
["build:vite", /^vite\.config\.(ts|js|mts|mjs)$/i],
|
|
176
|
+
["build:typescript", /^tsconfig\.json$/i],
|
|
177
|
+
["build:go", /^go\.mod$/i],
|
|
178
|
+
["build:rust", /^Cargo\.toml$/i],
|
|
179
|
+
["build:maven", /^pom\.xml$/i],
|
|
180
|
+
["build:gradle", /^build\.gradle(\.kts)?$/i],
|
|
181
|
+
["build:dotnet", /\.csproj$/i],
|
|
182
|
+
["build:composer", /^composer\.json$/i],
|
|
183
|
+
["build:swift", /^Package\.swift$/i],
|
|
184
|
+
["workspace:pnpm", /^pnpm-workspace\.yaml$/i]
|
|
185
|
+
];
|
|
186
|
+
|
|
187
|
+
for (const [signalId, pattern] of directBuildMarkers) {
|
|
188
|
+
const evidence = files.filter((file) => pattern.test(path.posix.basename(file)));
|
|
189
|
+
if (evidence.length > 0) {
|
|
190
|
+
signals.push(createSignal(signalId, evidence, 0.8));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (fileSet.has("Makefile")) {
|
|
195
|
+
signals.push(createSignal("build:make", ["Makefile"], 0.75));
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
return sortSignals(signals);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
function detectTestSignals(files, packageJson, textSources) {
|
|
202
|
+
const signals = [];
|
|
203
|
+
const dependencyNames = new Set([
|
|
204
|
+
...Object.keys(packageJson?.dependencies ?? {}),
|
|
205
|
+
...Object.keys(packageJson?.devDependencies ?? {})
|
|
206
|
+
]);
|
|
207
|
+
const javascriptTestFiles = files.filter(
|
|
208
|
+
(file) => /(^|\/)(__tests__|tests?)\//i.test(file) && /\.(m?[jt]sx?|cjs|mjs)$/i.test(file) || /\.(test|spec)\.(m?[jt]sx?)$/i.test(file)
|
|
209
|
+
);
|
|
210
|
+
|
|
211
|
+
if (dependencyNames.has("vitest")) {
|
|
212
|
+
signals.push(createSignal("test:vitest", ["package.json"], 0.95));
|
|
213
|
+
}
|
|
214
|
+
if (dependencyNames.has("jest")) {
|
|
215
|
+
signals.push(createSignal("test:jest", ["package.json"], 0.9));
|
|
216
|
+
}
|
|
217
|
+
if (javascriptTestFiles.length > 0) {
|
|
218
|
+
signals.push(createSignal("test:javascript-files", javascriptTestFiles, 0.8));
|
|
219
|
+
}
|
|
220
|
+
if (files.some((file) => /^tests\/.+\.py$/i.test(file) || /test_.+\.py$/i.test(file))) {
|
|
221
|
+
signals.push(createSignal("test:pytest", files.filter((file) => /^tests\/.+\.py$/i.test(file) || /test_.+\.py$/i.test(file)), 0.8));
|
|
222
|
+
}
|
|
223
|
+
if (files.some((file) => /_test\.go$/i.test(file))) {
|
|
224
|
+
signals.push(createSignal("test:go", files.filter((file) => /_test\.go$/i.test(file)), 0.8));
|
|
225
|
+
}
|
|
226
|
+
if (files.some((file) => /src\/test\/java\//i.test(file))) {
|
|
227
|
+
signals.push(createSignal("test:junit", files.filter((file) => /src\/test\/java\//i.test(file)), 0.8));
|
|
228
|
+
}
|
|
229
|
+
if (files.some((file) => /\.Tests?\.csproj$/i.test(file) || /tests\//i.test(file) && /\.cs$/i.test(file))) {
|
|
230
|
+
signals.push(createSignal("test:xunit", files.filter((file) => /\.Tests?\.csproj$/i.test(file) || (/tests\//i.test(file) && /\.cs$/i.test(file))), 0.8));
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
const pyproject = textSources.get("pyproject.toml") ?? "";
|
|
234
|
+
if (pyproject.includes("pytest")) {
|
|
235
|
+
signals.push(createSignal("test:pytest", ["pyproject.toml"], 0.9));
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
return sortSignals(signals);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
function detectDeploymentSignals(files) {
|
|
242
|
+
const signals = [];
|
|
243
|
+
|
|
244
|
+
const markers = [
|
|
245
|
+
["deploy:docker", /^Dockerfile$/i],
|
|
246
|
+
["deploy:docker-compose", /^docker-compose\.ya?ml$/i],
|
|
247
|
+
["deploy:github-actions", /^\.github\/workflows\//i],
|
|
248
|
+
["deploy:vercel", /^vercel\.json$/i],
|
|
249
|
+
["deploy:netlify", /^netlify\.toml$/i],
|
|
250
|
+
["deploy:kubernetes", /(^|\/)(k8s|kubernetes)\//i],
|
|
251
|
+
["deploy:helm", /(^|\/)chart(s)?\//i],
|
|
252
|
+
["deploy:procfile", /^Procfile$/i]
|
|
253
|
+
];
|
|
254
|
+
|
|
255
|
+
for (const [signalId, pattern] of markers) {
|
|
256
|
+
const evidence = files.filter((file) => pattern.test(file));
|
|
257
|
+
if (evidence.length > 0) {
|
|
258
|
+
signals.push(createSignal(signalId, evidence, 0.8));
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return sortSignals(signals);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
function detectRiskSignals(files, testSignals) {
|
|
266
|
+
const signals = [];
|
|
267
|
+
|
|
268
|
+
const securityEvidence = files.filter((file) => /(security|auth|threat|iam|permissions?)/i.test(file));
|
|
269
|
+
if (securityEvidence.length > 0) {
|
|
270
|
+
signals.push(createSignal("security", securityEvidence, 0.86));
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
const legacyEvidence = files.filter((file) => /(legacy|deprecated|old)/i.test(file));
|
|
274
|
+
if (legacyEvidence.length > 0) {
|
|
275
|
+
signals.push(createSignal("legacy", legacyEvidence, 0.88));
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
const migrationEvidence = files.filter((file) => /(migration|migrate|flyway|liquibase)/i.test(file));
|
|
279
|
+
if (migrationEvidence.length > 0) {
|
|
280
|
+
signals.push(createSignal("migration", migrationEvidence, 0.82));
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if (testSignals.length === 0) {
|
|
284
|
+
signals.push(createSignal("missing-tests", ["No test files or frameworks detected."], 0.92));
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
return sortSignals(signals);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
function detectMissingValidationSurfaces(files, testSignals, buildSignals) {
|
|
291
|
+
const missing = [];
|
|
292
|
+
const fileSet = new Set(files);
|
|
293
|
+
|
|
294
|
+
if (testSignals.length === 0) {
|
|
295
|
+
missing.push(
|
|
296
|
+
createSignal("validation:missing-tests", ["No tests directory, test files, or test framework detected."], 0.95)
|
|
297
|
+
);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
const hasCi = files.some((file) => /^\.github\/workflows\//i.test(file));
|
|
301
|
+
if (!hasCi) {
|
|
302
|
+
missing.push(createSignal("validation:missing-ci", ["No GitHub Actions workflows detected."], 0.75));
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
const hasLint = buildSignals.some((signal) => signal.id.startsWith("build:typescript")) || fileSet.has(".eslintrc") || fileSet.has("eslint.config.js");
|
|
306
|
+
if (!hasLint) {
|
|
307
|
+
missing.push(createSignal("validation:missing-lint", ["No lint configuration detected."], 0.65));
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
return missing;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
function detectFrameworksFromText(facts) {
|
|
314
|
+
const { files, packageManifests, textSources } = facts;
|
|
315
|
+
const packageDeps = new Set(
|
|
316
|
+
packageManifests.flatMap((manifest) => [
|
|
317
|
+
...Object.keys(manifest.dependencies ?? {}),
|
|
318
|
+
...Object.keys(manifest.devDependencies ?? {})
|
|
319
|
+
])
|
|
320
|
+
);
|
|
321
|
+
const frameworks = [];
|
|
322
|
+
const pushMatch = (id, confidence, evidence) => {
|
|
323
|
+
frameworks.push({
|
|
324
|
+
id,
|
|
325
|
+
confidence,
|
|
326
|
+
evidence: evidence.slice(0, 5)
|
|
327
|
+
});
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
if (packageDeps.has("react") || files.some((file) => /\.tsx$/i.test(file))) {
|
|
331
|
+
pushMatch("react", packageDeps.has("react") ? 0.96 : 0.7, packageDeps.has("react") ? ["package.json dependency react"] : files.filter((file) => /\.tsx$/i.test(file)));
|
|
332
|
+
}
|
|
333
|
+
if (packageDeps.has("vite") || files.some((file) => /^vite\.config\./i.test(path.posix.basename(file)))) {
|
|
334
|
+
pushMatch("vite", packageDeps.has("vite") ? 0.95 : 0.8, packageDeps.has("vite") ? ["package.json dependency vite"] : files.filter((file) => /^vite\.config\./i.test(path.posix.basename(file))));
|
|
335
|
+
}
|
|
336
|
+
if (packageDeps.has("express")) {
|
|
337
|
+
pushMatch("express", 0.95, ["package.json dependency express"]);
|
|
338
|
+
}
|
|
339
|
+
if (packageDeps.has("next") || files.some((file) => /^next\.config\./i.test(path.posix.basename(file)))) {
|
|
340
|
+
pushMatch("nextjs", packageDeps.has("next") ? 0.97 : 0.84, packageDeps.has("next") ? ["package.json dependency next"] : files.filter((file) => /^next\.config\./i.test(path.posix.basename(file))));
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
const pyproject = textSources.get("pyproject.toml") ?? "";
|
|
344
|
+
const requirements = textSources.get("requirements.txt") ?? "";
|
|
345
|
+
if (pyproject.includes("fastapi") || requirements.includes("fastapi")) {
|
|
346
|
+
pushMatch("fastapi", 0.95, [pyproject.includes("fastapi") ? "pyproject.toml dependency fastapi" : "requirements.txt dependency fastapi"]);
|
|
347
|
+
}
|
|
348
|
+
if (pyproject.includes("django") || requirements.includes("django") || files.includes("manage.py")) {
|
|
349
|
+
pushMatch("django", 0.94, [files.includes("manage.py") ? "manage.py" : pyproject.includes("django") ? "pyproject.toml dependency django" : "requirements.txt dependency django"]);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
const pom = textSources.get("pom.xml") ?? "";
|
|
353
|
+
const gradle = `${textSources.get("build.gradle") ?? ""}\n${textSources.get("build.gradle.kts") ?? ""}`;
|
|
354
|
+
if (pom.includes("spring-boot") || gradle.includes("spring-boot")) {
|
|
355
|
+
pushMatch("spring-boot", 0.95, [pom.includes("spring-boot") ? "pom.xml spring-boot" : "build.gradle spring-boot"]);
|
|
356
|
+
}
|
|
357
|
+
if (gradle.includes("ktor")) {
|
|
358
|
+
pushMatch("ktor", 0.92, ["build.gradle ktor"]);
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
const csproj = [...textSources.entries()].find(([filePath]) => /\.csproj$/i.test(filePath))?.[1] ?? "";
|
|
362
|
+
const programCs = textSources.get("Program.cs") ?? "";
|
|
363
|
+
if (csproj.includes("Microsoft.NET.Sdk.Web") || programCs.includes("WebApplication.CreateBuilder")) {
|
|
364
|
+
pushMatch("aspnet-core", csproj.includes("Microsoft.NET.Sdk.Web") ? 0.96 : 0.86, [csproj.includes("Microsoft.NET.Sdk.Web") ? "Api.csproj Microsoft.NET.Sdk.Web" : "Program.cs WebApplication.CreateBuilder"]);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
const goMod = textSources.get("go.mod") ?? "";
|
|
368
|
+
const goSources = [...textSources.entries()]
|
|
369
|
+
.filter(([filePath]) => /\.go$/i.test(filePath))
|
|
370
|
+
.map(([, content]) => content)
|
|
371
|
+
.join("\n");
|
|
372
|
+
if (goMod.includes("gin-gonic/gin") || goSources.includes("gin.Default(")) {
|
|
373
|
+
pushMatch("gin", goMod.includes("gin-gonic/gin") ? 0.93 : 0.82, [goMod.includes("gin-gonic/gin") ? "go.mod gin-gonic/gin" : "gin.Default()"]);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
const composer = textSources.get("composer.json") ?? "";
|
|
377
|
+
if (composer.includes("symfony/") || files.includes("bin/console")) {
|
|
378
|
+
pushMatch("symfony", composer.includes("symfony/") ? 0.92 : 0.82, [composer.includes("symfony/") ? "composer.json symfony/*" : "bin/console"]);
|
|
379
|
+
}
|
|
380
|
+
if (composer.includes("laravel/framework") || files.includes("artisan")) {
|
|
381
|
+
pushMatch("laravel", composer.includes("laravel/framework") ? 0.96 : 0.88, [composer.includes("laravel/framework") ? "composer.json laravel/framework" : "artisan"]);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
return sortSignals(frameworks);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
function detectRepoType(facts) {
|
|
388
|
+
const { files, buildSignals, frameworkMatches, riskSignals, packageJson } = facts;
|
|
389
|
+
const fileSet = new Set(files);
|
|
390
|
+
|
|
391
|
+
if (buildSignals.some((signal) => signal.id.startsWith("workspace:"))) {
|
|
392
|
+
return "monorepo";
|
|
393
|
+
}
|
|
394
|
+
if (frameworkMatches.some((match) => ["react", "vite", "nextjs"].includes(match.id))) {
|
|
395
|
+
return "app";
|
|
396
|
+
}
|
|
397
|
+
if (frameworkMatches.some((match) => ["express", "fastapi", "django", "spring-boot", "aspnet-core", "gin", "ktor", "symfony", "laravel"].includes(match.id))) {
|
|
398
|
+
return "service";
|
|
399
|
+
}
|
|
400
|
+
if (fileSet.has("cmd/hforge/main.go") || packageJson?.bin) {
|
|
401
|
+
return "cli";
|
|
402
|
+
}
|
|
403
|
+
if (riskSignals.some((signal) => signal.id === "legacy")) {
|
|
404
|
+
return "legacy";
|
|
405
|
+
}
|
|
406
|
+
if (files.some((file) => file.startsWith("scripts/")) && files.every((file) => !file.startsWith("src/"))) {
|
|
407
|
+
return "automation";
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
return "library";
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
function normalizeRecommendations(result, frameworkCatalog) {
|
|
414
|
+
const bundleRecommendations = [];
|
|
415
|
+
const profileRecommendations = [];
|
|
416
|
+
const skillRecommendations = [];
|
|
417
|
+
const validationRecommendations = [];
|
|
418
|
+
|
|
419
|
+
for (const language of result.dominantLanguages.slice(0, 3)) {
|
|
420
|
+
bundleRecommendations.push({
|
|
421
|
+
id: `lang:${language.id}`,
|
|
422
|
+
kind: "bundle",
|
|
423
|
+
confidence: language.confidence,
|
|
424
|
+
evidence: language.evidence,
|
|
425
|
+
why: `Dominant ${language.id} files were detected in the repository.`
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
for (const framework of result.frameworkMatches) {
|
|
430
|
+
const frameworkEntry = frameworkCatalog.frameworks.find((item) => item.id === framework.id);
|
|
431
|
+
if (!frameworkEntry) {
|
|
432
|
+
continue;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
bundleRecommendations.push({
|
|
436
|
+
id: frameworkEntry.bundleId,
|
|
437
|
+
kind: "bundle",
|
|
438
|
+
confidence: framework.confidence,
|
|
439
|
+
evidence: framework.evidence,
|
|
440
|
+
why: `${frameworkEntry.displayName} evidence indicates this repo needs framework-specific guidance.`
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
if (["service", "app", "monorepo"].includes(result.repoType)) {
|
|
445
|
+
profileRecommendations.push({
|
|
446
|
+
id: "developer",
|
|
447
|
+
kind: "profile",
|
|
448
|
+
confidence: result.repoType === "monorepo" ? 0.92 : 0.82,
|
|
449
|
+
evidence: [`repoType:${result.repoType}`],
|
|
450
|
+
why: "The developer profile matches active implementation and validation work."
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
profileRecommendations.push({
|
|
455
|
+
id: "core",
|
|
456
|
+
kind: "profile",
|
|
457
|
+
confidence: 0.7,
|
|
458
|
+
evidence: ["baseline portable install surface"],
|
|
459
|
+
why: "The core profile remains the safest minimal baseline."
|
|
460
|
+
});
|
|
461
|
+
|
|
462
|
+
const riskIds = new Set(result.riskSignals.map((signal) => signal.id));
|
|
463
|
+
if (result.repoType === "monorepo" || result.repoType === "legacy" || result.dominantLanguages.length > 1) {
|
|
464
|
+
skillRecommendations.push({
|
|
465
|
+
id: "skill:repo-onboarding",
|
|
466
|
+
kind: "skill",
|
|
467
|
+
confidence: 0.9,
|
|
468
|
+
evidence: [`repoType:${result.repoType}`, ...result.dominantLanguages.slice(0, 2).map((language) => `lang:${language.id}`)],
|
|
469
|
+
why: "Complex repository layouts benefit from a deterministic onboarding pass."
|
|
470
|
+
});
|
|
471
|
+
skillRecommendations.push({
|
|
472
|
+
id: "skill:architecture-decision-records",
|
|
473
|
+
kind: "skill",
|
|
474
|
+
confidence: 0.74,
|
|
475
|
+
evidence: [`repoType:${result.repoType}`],
|
|
476
|
+
why: "Cross-cutting or modernization work should capture architecture intent explicitly."
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
if (riskIds.has("security") || result.frameworkMatches.some((framework) => ["express", "fastapi", "django", "spring-boot", "aspnet-core", "gin", "ktor", "symfony", "laravel"].includes(framework.id))) {
|
|
481
|
+
skillRecommendations.push({
|
|
482
|
+
id: "skill:security-scan",
|
|
483
|
+
kind: "skill",
|
|
484
|
+
confidence: riskIds.has("security") ? 0.95 : 0.76,
|
|
485
|
+
evidence: riskIds.has("security") ? result.riskSignals.find((signal) => signal.id === "security")?.evidence ?? [] : result.frameworkMatches.map((framework) => `framework:${framework.id}`),
|
|
486
|
+
why: "Service and security-sensitive repositories need an explicit security boundary review."
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
if (result.deploymentSignals.length > 0 || result.missingValidationSurfaces.length > 0) {
|
|
491
|
+
skillRecommendations.push({
|
|
492
|
+
id: "skill:release-readiness",
|
|
493
|
+
kind: "skill",
|
|
494
|
+
confidence: 0.84,
|
|
495
|
+
evidence: [
|
|
496
|
+
...result.deploymentSignals.slice(0, 2).map((signal) => signal.id),
|
|
497
|
+
...result.missingValidationSurfaces.slice(0, 2).map((signal) => signal.id)
|
|
498
|
+
],
|
|
499
|
+
why: "Release-focused validation helps convert deployment and quality signals into a clear gate."
|
|
500
|
+
});
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
if (result.frameworkMatches.length > 0) {
|
|
504
|
+
skillRecommendations.push({
|
|
505
|
+
id: "skill:documentation-lookup",
|
|
506
|
+
kind: "skill",
|
|
507
|
+
confidence: 0.72,
|
|
508
|
+
evidence: result.frameworkMatches.map((framework) => `framework:${framework.id}`),
|
|
509
|
+
why: "Framework-specific work benefits from a docs-first lookup path."
|
|
510
|
+
});
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
for (const missing of result.missingValidationSurfaces) {
|
|
514
|
+
validationRecommendations.push({
|
|
515
|
+
id: missing.id,
|
|
516
|
+
kind: "validation",
|
|
517
|
+
confidence: missing.confidence,
|
|
518
|
+
evidence: missing.evidence,
|
|
519
|
+
why: "The repo is missing a validation surface that Harness Forge can flag early."
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
const dedupe = (values) =>
|
|
524
|
+
Object.values(
|
|
525
|
+
values.reduce((accumulator, value) => {
|
|
526
|
+
const existing = accumulator[value.id];
|
|
527
|
+
if (!existing || existing.confidence < value.confidence) {
|
|
528
|
+
accumulator[value.id] = value;
|
|
529
|
+
}
|
|
530
|
+
return accumulator;
|
|
531
|
+
}, {})
|
|
532
|
+
).sort((left, right) => right.confidence - left.confidence);
|
|
533
|
+
|
|
534
|
+
return {
|
|
535
|
+
bundles: dedupe(bundleRecommendations),
|
|
536
|
+
profiles: dedupe(profileRecommendations),
|
|
537
|
+
skills: dedupe(skillRecommendations),
|
|
538
|
+
validations: dedupe(validationRecommendations)
|
|
539
|
+
};
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
export async function collectRepoFacts(root) {
|
|
543
|
+
const repoRoot = path.resolve(root);
|
|
544
|
+
const files = [];
|
|
545
|
+
const generatedAt = new Date().toISOString();
|
|
546
|
+
|
|
547
|
+
await walk(repoRoot, (relativePath) => {
|
|
548
|
+
files.push(relativePath);
|
|
549
|
+
});
|
|
550
|
+
|
|
551
|
+
files.sort((left, right) => left.localeCompare(right));
|
|
552
|
+
|
|
553
|
+
const interestingFiles = new Set(
|
|
554
|
+
files.filter((file) => {
|
|
555
|
+
const baseName = path.posix.basename(file);
|
|
556
|
+
return (
|
|
557
|
+
baseName === "package.json" ||
|
|
558
|
+
baseName === "pyproject.toml" ||
|
|
559
|
+
baseName === "requirements.txt" ||
|
|
560
|
+
baseName === "go.mod" ||
|
|
561
|
+
baseName === "pom.xml" ||
|
|
562
|
+
baseName === "build.gradle" ||
|
|
563
|
+
baseName === "build.gradle.kts" ||
|
|
564
|
+
baseName === "composer.json" ||
|
|
565
|
+
baseName === "Program.cs" ||
|
|
566
|
+
/\.csproj$/i.test(baseName) ||
|
|
567
|
+
/\.go$/i.test(baseName)
|
|
568
|
+
);
|
|
569
|
+
})
|
|
570
|
+
);
|
|
571
|
+
|
|
572
|
+
const textSources = new Map();
|
|
573
|
+
await Promise.all(
|
|
574
|
+
[...interestingFiles].map(async (relativePath) => {
|
|
575
|
+
const content = await readTextIfPresent(path.join(repoRoot, relativePath));
|
|
576
|
+
if (content) {
|
|
577
|
+
textSources.set(relativePath, content);
|
|
578
|
+
}
|
|
579
|
+
})
|
|
580
|
+
);
|
|
581
|
+
|
|
582
|
+
const packageManifestPaths = files.filter((file) => path.posix.basename(file) === "package.json");
|
|
583
|
+
const packageManifestEntries = await Promise.all(
|
|
584
|
+
packageManifestPaths.map(async (relativePath) => ({
|
|
585
|
+
relativePath,
|
|
586
|
+
manifest: await readJsonIfPresent(path.join(repoRoot, relativePath))
|
|
587
|
+
}))
|
|
588
|
+
);
|
|
589
|
+
const packageManifests = packageManifestEntries.map((entry) => entry.manifest).filter(Boolean);
|
|
590
|
+
const packageJson = packageManifestEntries.find((entry) => entry.relativePath === "package.json")?.manifest ?? packageManifests[0] ?? null;
|
|
591
|
+
const { dominantLanguages } = detectLanguages(files);
|
|
592
|
+
const buildSignals = detectBuildSignals(files, packageJson);
|
|
593
|
+
const testSignals = detectTestSignals(files, packageJson, textSources);
|
|
594
|
+
const deploymentSignals = detectDeploymentSignals(files);
|
|
595
|
+
const riskSignals = detectRiskSignals(files, testSignals);
|
|
596
|
+
const frameworkMatches = detectFrameworksFromText({
|
|
597
|
+
files,
|
|
598
|
+
packageManifests,
|
|
599
|
+
textSources
|
|
600
|
+
});
|
|
601
|
+
|
|
602
|
+
const repoType = detectRepoType({
|
|
603
|
+
files,
|
|
604
|
+
buildSignals,
|
|
605
|
+
frameworkMatches,
|
|
606
|
+
riskSignals,
|
|
607
|
+
packageJson
|
|
608
|
+
});
|
|
609
|
+
const missingValidationSurfaces = detectMissingValidationSurfaces(files, testSignals, buildSignals);
|
|
610
|
+
|
|
611
|
+
return {
|
|
612
|
+
generatedAt,
|
|
613
|
+
root: repoRoot,
|
|
614
|
+
repoType,
|
|
615
|
+
dominantLanguages,
|
|
616
|
+
frameworkMatches,
|
|
617
|
+
buildSignals,
|
|
618
|
+
testSignals,
|
|
619
|
+
deploymentSignals,
|
|
620
|
+
riskSignals,
|
|
621
|
+
missingValidationSurfaces
|
|
622
|
+
};
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
export async function loadFrameworkCatalog() {
|
|
626
|
+
const frameworkCatalogPath = path.join(PACKAGE_ROOT, "manifests", "catalog", "framework-assets.json");
|
|
627
|
+
const content = await fs.readFile(frameworkCatalogPath, "utf8");
|
|
628
|
+
return JSON.parse(content);
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
export async function scoreRecommendations(root) {
|
|
632
|
+
const facts = await collectRepoFacts(root);
|
|
633
|
+
const frameworkCatalog = await loadFrameworkCatalog();
|
|
634
|
+
|
|
635
|
+
return {
|
|
636
|
+
...facts,
|
|
637
|
+
recommendations: normalizeRecommendations(facts, frameworkCatalog)
|
|
638
|
+
};
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
export function formatHumanReadable(result) {
|
|
642
|
+
const formatSection = (title, values, formatter) => {
|
|
643
|
+
if (values.length === 0) {
|
|
644
|
+
return `${title}: none`;
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
return `${title}:\n${values.map((value) => `- ${formatter(value)}`).join("\n")}`;
|
|
648
|
+
};
|
|
649
|
+
|
|
650
|
+
return [
|
|
651
|
+
`Repository: ${result.root}`,
|
|
652
|
+
`Type: ${result.repoType}`,
|
|
653
|
+
formatSection("Dominant languages", result.dominantLanguages, (value) => `${value.id} (${value.confidence}) via ${value.evidence.join(", ")}`),
|
|
654
|
+
formatSection("Frameworks", result.frameworkMatches, (value) => `${value.id} (${value.confidence}) via ${value.evidence.join(", ")}`),
|
|
655
|
+
formatSection("Bundles", result.recommendations?.bundles ?? [], (value) => `${value.id} (${value.confidence}) - ${value.why}`),
|
|
656
|
+
formatSection("Profiles", result.recommendations?.profiles ?? [], (value) => `${value.id} (${value.confidence}) - ${value.why}`),
|
|
657
|
+
formatSection("Skills", result.recommendations?.skills ?? [], (value) => `${value.id} (${value.confidence}) - ${value.why}`),
|
|
658
|
+
formatSection("Validations", result.recommendations?.validations ?? [], (value) => `${value.id} (${value.confidence}) - ${value.why}`)
|
|
659
|
+
].join("\n\n");
|
|
660
|
+
}
|