@manhd_d/ai-harness 0.12.0 → 0.13.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.
Files changed (136) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +26 -38
  3. package/adapters/ai-python/adapter.yaml +1 -1
  4. package/adapters/ai-python/rules.md +3 -0
  5. package/adapters/ai-python/skills/harness-ai-python-rag-access/SKILL.md +1 -0
  6. package/adapters/ai-python/skills/harness-ai-python-tool-safety/SKILL.md +1 -0
  7. package/adapters/astro/adapter.yaml +3 -5
  8. package/adapters/astro/checks/verification.yaml +6 -6
  9. package/adapters/astro/evals/cases.json +5 -5
  10. package/adapters/astro/rules/architecture.md +2 -8
  11. package/adapters/astro/rules/deployment.md +2 -8
  12. package/adapters/astro/rules.md +5 -14
  13. package/adapters/astro/skills/harness-astro-islands/SKILL.md +3 -2
  14. package/adapters/astro/skills/harness-astro-performance/SKILL.md +1 -0
  15. package/adapters/astro/skills/harness-astro-project-architecture/SKILL.md +9 -19
  16. package/adapters/astro/skills/harness-astro-seo/SKILL.md +1 -0
  17. package/adapters/java-spring/adapter.yaml +2 -4
  18. package/adapters/java-spring/rules/database.md +2 -2
  19. package/adapters/java-spring/rules/performance.md +2 -2
  20. package/adapters/java-spring/rules.md +4 -1
  21. package/adapters/java-spring/skills/harness-java-spring-spring-api/SKILL.md +1 -0
  22. package/adapters/kubernetes/adapter.yaml +1 -1
  23. package/adapters/kubernetes/rules.md +3 -0
  24. package/adapters/kubernetes/skills/harness-kubernetes-helm-release/SKILL.md +1 -0
  25. package/adapters/kubernetes/skills/harness-kubernetes-rollout-safety/SKILL.md +1 -0
  26. package/adapters/kubernetes/skills/harness-kubernetes-workload-review/SKILL.md +1 -0
  27. package/adapters/react-native/adapter.yaml +1 -1
  28. package/adapters/react-native/rules.md +3 -0
  29. package/adapters/react-native/skills/harness-react-native-behavior-testing/SKILL.md +1 -0
  30. package/adapters/react-native/skills/harness-react-native-device-permissions/SKILL.md +1 -0
  31. package/adapters/react-native/skills/harness-react-native-offline-sync/SKILL.md +1 -0
  32. package/adapters/react-native/skills/harness-react-native-screen-delivery/SKILL.md +1 -0
  33. package/adapters/react-nextjs/adapter.yaml +1 -1
  34. package/adapters/react-nextjs/rules.md +3 -0
  35. package/adapters/react-nextjs/skills/harness-react-nextjs-accessible-ui/SKILL.md +1 -0
  36. package/adapters/react-nextjs/skills/harness-react-nextjs-behavior-testing/SKILL.md +1 -0
  37. package/adapters/react-nextjs/skills/harness-react-nextjs-feature-delivery/SKILL.md +1 -0
  38. package/adapters/react-nextjs/skills/harness-react-nextjs-server-boundaries/SKILL.md +1 -0
  39. package/capabilities/analysis/capability.json +48 -0
  40. package/capabilities/analysis/checks/verification.json +16 -0
  41. package/capabilities/analysis/evals/cases.json +15 -0
  42. package/capabilities/architecture/agents/architecture-reviewer.md +5 -0
  43. package/capabilities/architecture/agents/solution-architect.md +5 -0
  44. package/capabilities/architecture/capability.json +1 -1
  45. package/capabilities/delivery/agents/project-manager.md +10 -11
  46. package/capabilities/delivery/capability.json +8 -2
  47. package/capabilities/delivery/templates/delivery-plan.md +2 -23
  48. package/capabilities/discovery/capability.json +37 -0
  49. package/capabilities/discovery/checks/verification.json +16 -0
  50. package/capabilities/discovery/evals/cases.json +15 -0
  51. package/capabilities/product/agents/business-analyst.md +5 -0
  52. package/capabilities/product/agents/product-manager.md +5 -0
  53. package/capabilities/product/agents/product-owner.md +5 -0
  54. package/capabilities/product/agents/project-manager.md +9 -14
  55. package/capabilities/product/agents/requirements-reviewer.md +5 -0
  56. package/capabilities/product/capability.json +8 -2
  57. package/capabilities/product/common/document-contract.md +10 -0
  58. package/capabilities/product/evals/cases.json +11 -0
  59. package/capabilities/product/skills/harness-product-acceptance-criteria/SKILL.md +4 -7
  60. package/capabilities/product/skills/harness-product-backlog-prioritization/SKILL.md +2 -6
  61. package/capabilities/product/skills/harness-product-brd-generation/SKILL.md +2 -6
  62. package/capabilities/product/skills/harness-product-business-analysis/SKILL.md +7 -10
  63. package/capabilities/product/skills/harness-product-document-review/SKILL.md +2 -6
  64. package/capabilities/product/skills/harness-product-idea-discovery/SKILL.md +2 -6
  65. package/capabilities/product/skills/harness-product-knowledge-analysis/SKILL.md +2 -6
  66. package/capabilities/product/skills/harness-product-mvp-definition/SKILL.md +1 -2
  67. package/capabilities/product/skills/harness-product-prd-generation/SKILL.md +2 -6
  68. package/capabilities/product/skills/harness-product-product-outcomes/SKILL.md +1 -2
  69. package/capabilities/product/skills/harness-product-product-research/SKILL.md +2 -6
  70. package/capabilities/product/skills/harness-product-srs-generation/SKILL.md +2 -6
  71. package/capabilities/product/skills/harness-product-techspec/SKILL.md +1 -1
  72. package/capabilities/product/skills/harness-product-traceability/SKILL.md +2 -6
  73. package/capabilities/product/skills/harness-product-use-case-generation/SKILL.md +2 -6
  74. package/capabilities/product/skills/harness-product-user-stories/SKILL.md +2 -6
  75. package/capabilities/product/templates/delivery-plan.md +3 -17
  76. package/cli/adapters.js +9 -5
  77. package/cli/agents.js +45 -9
  78. package/cli/capabilities.js +39 -8
  79. package/cli/checkpoint.js +57 -0
  80. package/cli/claude.js +40 -0
  81. package/cli/comparison.js +46 -0
  82. package/cli/composition.js +1 -0
  83. package/cli/files.js +2 -1
  84. package/cli/harness.js +69 -14
  85. package/cli/main.js +22 -9
  86. package/cli/maven.js +28 -0
  87. package/cli/verification-report.js +1 -1
  88. package/config/agents.claude-code.json +100 -0
  89. package/config/agents.default.json +25 -5
  90. package/core/agents/documentation.md +5 -0
  91. package/core/agents/implementer.md +5 -0
  92. package/core/agents/orchestrator.md +5 -0
  93. package/core/agents/planner.md +5 -0
  94. package/core/agents/project-manager.md +20 -0
  95. package/core/agents/reviewer.md +5 -0
  96. package/core/agents/security-reviewer.md +5 -0
  97. package/core/agents/test-engineer.md +5 -0
  98. package/core/checks/verification.json +12 -0
  99. package/core/evals/cases.json +22 -0
  100. package/core/policies/permissions.md +3 -1
  101. package/core/workflows/agent-routing.md +27 -26
  102. package/core/workflows/continuous-development.md +3 -0
  103. package/core/workflows/spec-to-code.md +1 -1
  104. package/docs/README.md +3 -1
  105. package/docs/agent-configuration.md +9 -5
  106. package/docs/agent-first.md +66 -0
  107. package/docs/agent-handoffs.md +4 -0
  108. package/docs/architecture.md +4 -0
  109. package/docs/cli.md +4 -0
  110. package/docs/continuous-development.md +4 -0
  111. package/docs/examples/astro-micro-tools.md +1 -1
  112. package/docs/examples/checkpoint.json +20 -0
  113. package/docs/examples/spring-boot-api.md +2 -4
  114. package/docs/getting-started.md +3 -2
  115. package/docs/i18n/README.es.md +32 -0
  116. package/docs/i18n/README.vi.md +19 -44
  117. package/docs/i18n/README.zh-CN.md +32 -0
  118. package/docs/skill-matrix.md +7 -7
  119. package/docs/tool-setup/README.md +69 -67
  120. package/docs/tool-setup/claude-code.md +41 -49
  121. package/docs/tool-setup/codex.md +31 -43
  122. package/docs/tool-setup/copilot.md +35 -38
  123. package/docs/tool-setup/cursor.md +25 -40
  124. package/docs/tool-setup/gemini-cli.md +31 -35
  125. package/docs/tool-setup/kiro.md +55 -0
  126. package/docs/versioning.md +13 -0
  127. package/evals/real-task-comparison.md +4 -0
  128. package/harness.yaml +4 -2
  129. package/package.json +3 -2
  130. package/scripts/compare-tasks.js +15 -0
  131. package/templates/AGENTS.md +19 -28
  132. package/templates/delivery-plan.md +25 -0
  133. package/adapters/astro/skills/harness-astro-cloudflare/SKILL.md +0 -27
  134. package/adapters/astro/skills/harness-astro-microfrontend/SKILL.md +0 -27
  135. package/adapters/java-spring/skills/harness-java-spring-database-migration/SKILL.md +0 -23
  136. package/adapters/java-spring/skills/harness-java-spring-kafka-outbox/SKILL.md +0 -23
@@ -1,28 +1,29 @@
1
- # Agent preferences, model routing and execution
1
+ # Agent-first task routing
2
2
 
3
- Read project-owned .harness/agents.json when present. On legacy installs, absence means no declared
4
- routing preference; use actual host settings and report the gap. `aih setup --host <id>` resolves the
5
- contract without probing models or writing native host config. Source defaults are a recommendation,
6
- not evidence of model/account availability. Runtime permissions and the user's current model choice win.
3
+ Read project-owned agents.json and actual host capabilities. aih agents resolves installed contracts,
4
+ canonical aliases and preferred skills without spawning workers or probing providers.
7
5
 
8
- 1. Select only relevant workflow/skills/source. Resolve namespaced role IDs against installed Core and
9
- selected capability contracts; inactive or disabled routing cannot remove required quality/security checks.
10
- 2. Model aliases use @name, provider/model/reasoning can be overridden per role. Missing role mappings
11
- inherit project defaults and must be reported; never silently substitute another provider or premium.
12
- 3. Verify requested/native model ID, reasoning support, authentication and delegation in the actual host.
13
- Host-incompatible or unverified choices need a grounded user decision/check before model-dependent
14
- execution. Explicit user mappings are declarations, not proof that a native model is available.
15
- 4. Single-agent: one session performs sequential roles and relevant skills. Hybrid: one lead and an
16
- independent helper only when useful, authorized and supported. Multi-agent: use separate contracts
17
- and concise handoffs only when runtime supports it. Follow the host's actual delegation rules.
18
- 5. Keep simple edits/clear bugfixes in one session. For parallel work isolate responsibilities/paths,
19
- share only scope, source references, decisions, AC and blockers; do not send every skill/doc to each worker.
20
- 6. Treat maxConcurrentAgents and maxRounds as requested caps, never counters enforced by this CLI.
21
- Count the lead in concurrency planning; translate native worker/thread limits only after checking
22
- their semantics. When a round limit is reached, checkpoint unresolved work instead of claiming done.
23
- 7. Premium/Astra is allowed only through the user's explicit model/tier selection; automatic escalation
24
- must remain false. An economy preference does not waive correctness/security or mandatory review.
25
- 8. No real token budget or usage meter is supplied. Read real host usage when available; report unknown
26
- cost/availability. Preserve existing model settings until the user agrees a native change.
27
- 9. Handoff task/role ID, actual model/effort if known, files/revision, decisions, performed checks, remaining
28
- questions and next owner. A same-session author review is not independent review.
6
+ 1. Orchestrator scopes the request, existing decisions, sources and affected repositories. Keep small
7
+ clear edits in one session; roles are perspectives unless actual delegation is supported/authorized.
8
+ 2. BA handles requirements/domain/AC gaps. PO/Product Manager handles value, scope and feedback.
9
+ SA handles open architecture/technology choices. PM handles dependencies, risks and handoff.
10
+ Developer implements accepted contracts; QA/Reviewer checks actual behavior and evidence.
11
+ 3. Approved SA/ADR decisions > scoped project conventions > adapter defaults, subject to actual
12
+ user/host permission and security. Do not select a broker, cache, provider, layout or pattern because
13
+ an adapter exists. SA proposes 2–3 viable options/trade-offs only for real open decisions, and
14
+ records the user's choice before consequential implementation. Do not ask again about approved facts.
15
+ 4. Load only relevant preferred skills by description; optional skills may be absent. Product is the
16
+ compatibility bundle; analysis/discovery expose selected canonical skills. PM role IDs are aliases
17
+ of core:project-manager. Contracts with the same canonical_id are one responsibility, not workers.
18
+ 5. Host-native model is the default. init --host claude-code seeds native Anthropic aliases only when
19
+ agents.json is absent; existing model choices are preserved. Requested effort/model/access remains
20
+ unverified until checked in the host. Never escalate to paid/premium automatically.
21
+ 6. execution mode/concurrency/rounds, optional autonomy and budget are declarations, not enforcement.
22
+ An autopilot declaration needs explicit actions/repository scope and actual user delegation; it
23
+ cannot override host denials, branch protection, source-write policy or this repository's rules.
24
+ 7. When budget/rounds/access prevents progress, checkpoint completed evidence, pending tasks, blockers
25
+ and next action. Record usage/quota only from an actual host source; unknown remains unknown.
26
+ 8. Handoff scope, baseline revisions, AC/ADR/decisions, authorized actions, actual evidence, side-effect
27
+ receipts and next owner. Reconcile checkpoint and current source/remote state before retries.
28
+
29
+ Use continuous-development.md for full changes/resume. No CLI orchestration runtime or paid model calls.
@@ -96,3 +96,6 @@ mandatory checks or required publication prevent an unconditional completion cla
96
96
  completed scope and limitations, not simply “done”. Update the existing tasks.md handoff with current
97
97
  baseline, decisions, evidence revision, blockers, remaining work, next action/owner and distinct
98
98
  implementation/merge/release status. On the next session, start again at baseline discovery.
99
+
100
+ ## Meaningful-step recovery
101
+ Use agent-routing.md for scoped perspectives. Keep the existing design/tasks/decisions/evidence current, then save a compact project-owned checkpoint after meaningful steps and before external side effects. aih checkpoint/resume supplies validation and local freshness hints, not execution. Record task/evidence IDs, baseline digests, completed/pending work, blockers, operation identity/status and next action; never copy chat or secrets. If interrupted, reconcile actual sources and unknown/prepared remote operations before retrying. Read real host usage/quota only when available; otherwise record unknown and retain user model settings. Use explicit actions/repository scope for an authorized autopilot; host/repo permission rules still apply.
@@ -31,7 +31,7 @@ in the task note or existing change. Preserve each module's conventions in mixed
31
31
  the diff against those facts and run configured lint/type/build/tests and available boundary checks;
32
32
  report manual review where automated architecture coverage is absent.
33
33
 
34
- Use the harness-spec skill to draft and harness-tdd to implement. Use harness-debugging when diagnosing
34
+ Use harness-spec to draft, harness-tdd to implement and harness-review for the review stage. Use harness-debugging when diagnosing
35
35
  an observed defect. Agents are roles, not automatically spawned workers; a single assistant can perform
36
36
  them sequentially. Respect the host's delegation rules.
37
37
  Small documentation edits or obvious low-risk fixes may skip a full spec with a rationale in the PR.
package/docs/README.md CHANGED
@@ -8,7 +8,7 @@ Chỉ đọc phần phù hợp với công việc đang làm.
8
8
  | Cần làm gì? | Đọc ở đâu? |
9
9
  | --- | --- |
10
10
  | Tra lệnh, chọn module, xử lý conflict | [CLI](cli.md) · [Adapters](adapters.md) |
11
- | Kết nối công cụ AI | [Codex, Claude Code, Cursor, Copilot, Gemini CLI](tool-setup/README.md) |
11
+ | Kết nối công cụ AI | [Codex, Claude Code, Cursor, Copilot, Gemini CLI, Kiro](tool-setup/README.md) |
12
12
  | Chọn model và cách chạy agent | [Agent configuration](agent-configuration.md) |
13
13
  | Khai báo build/test, Maven/JDK riêng | [Project configuration](project-configuration.md) |
14
14
  | Áp dụng coding conventions | [Project conventions](project-conventions.md) |
@@ -43,3 +43,5 @@ Chỉ đọc phần phù hợp với công việc đang làm.
43
43
  See [Adaptive verification and TechSpec](adaptive-verification.md) for read-only discovery, evidence reports and selective technical documentation.
44
44
 
45
45
  [Continuous development & living documentation](continuous-development.md): successive features, bugfixes, baseline reconciliation and selective maintenance.
46
+
47
+ - [Agent-first delivery and 0.12 migration](agent-first.md): proportional roles, selective Product profiles, retired recipes, brownfield/Claude/Maven and checkpoint recovery.
@@ -27,7 +27,7 @@ with a field-level error; it is not reset automatically. Keep credentials in hos
27
27
  ## Contract and precedence
28
28
  Schema version 1 uses provider, defaultModel, defaultReasoning, models, agents and execution, with
29
29
  optional hosts. Role IDs are namespace:role: core:planner, product:project-manager and
30
- delivery:project-manager remain distinct. Defaults cover all current roles; only installed selected
30
+ delivery:project-manager retain distinct configuration IDs but alias the canonical core:project-manager responsibility. Defaults cover all current roles; only installed selected
31
31
  roles are active. Unknown/custom role IDs can be declared but are not asserted to have a host contract.
32
32
  Future unmapped installed roles inherit project defaults and are listed by setup.
33
33
 
@@ -41,10 +41,10 @@ explicit role mappings. enabled:false disables a dedicated route, not required r
41
41
  ```json
42
42
  {
43
43
  "schema_version": 1,
44
- "provider": "openai",
45
- "defaultModel": "gpt-6.1-sol",
44
+ "provider": "host",
45
+ "defaultModel": "host-default",
46
46
  "defaultReasoning": "medium",
47
- "models": { "economy": "gpt-6-luna", "balanced": "gpt-6.1-sol", "premium": "gpt-6-astra" },
47
+ "models": { "economy": "host-default", "balanced": "host-default", "premium": "host-default" },
48
48
  "agents": {
49
49
  "core:orchestrator": { "model": "@balanced", "reasoning": "high" },
50
50
  "core:implementer": { "model": "@balanced", "reasoning": "medium" },
@@ -56,7 +56,7 @@ explicit role mappings. enabled:false disables a dedicated route, not required r
56
56
  ```
57
57
  This is a partial example; omitted registered roles inherit defaults. The shipped default covers Core,
58
58
  Product, Architecture and Delivery roles. Orchestrator/Planner/Architect/Reviewer/Security Reviewer
59
- use Sol high; BA/PO/PM/Implementer/Test Engineer use Sol medium; Documentation uses Luna low.
59
+ use declared high/medium reasoning preferences; new seeds retain host-selected models and documentation uses low reasoning. Explicit provider/model examples below illustrate configuration and are not defaults.
60
60
  Economy is Luna low with single-agent/one concurrent session; it is a preference, not a cost guarantee.
61
61
 
62
62
  Reasoning levels structurally accepted: none, minimal, low, medium, high, xhigh, max, ultra. Actual
@@ -97,3 +97,7 @@ controls vary by client. No role JSON automatically creates a native subagent or
97
97
  one lead plus at most one independent helper when supported. Keep inputs scoped, load skill metadata
98
98
  before one needed body and checkpoint unresolved work. Actual usage/quotas come from the host; no fake
99
99
  budget meter is inferred from model tiers, maxRounds or concurrency. See [Agent handoffs](agent-handoffs.md).
100
+
101
+ ## Agent-first defaults and declarations (unreleased)
102
+
103
+ New seeds use host/host-default so the actual host model remains selected; old agents.json is preserved. Claude host init offers native aliases only when absent. aih agents resolves canonical role IDs and required/optional skill preferences. Optional execution.autonomy and execution.budget are validated declarations, not execution permission or quota enforcement. Checkpoint real usage or unknown; never infer cost or auto-escalate. See [Agent-first guide](agent-first.md).
@@ -0,0 +1,66 @@
1
+ # Agent-first delivery and migration from 0.12.0
2
+
3
+ Unreleased additions require a reviewed source bundle until published. Distribution stays release-PR owned.
4
+
5
+ ## Responsibility and scope
6
+ Core Orchestrator selects only needed BA, PO/Product Manager, SA, PM, Developer and QA/Reviewer perspectives. Single host performs them sequentially; independent workers require actual host delegation. Inspect scope, approved requirements/ADRs and existing conventions first. Open architecture/technology choices go to SA with alternatives/trade-offs and actual owner decision. Reuse accepted choices without asking again. Adapters implement accepted designs; they do not choose infrastructure.
7
+
8
+ Core-only works on unsupported stacks. Registered detection is metadata, not a supported-stack restriction or runtime readiness guarantee. All remaining adapter skills take approved SA decisions as input. The Java outbox/migration and Astro Cloudflare/microfrontend recipes are retired; old IDs return migration guidance after update. Existing old snapshots still contain their old locked skills until reviewed update. Edited managed retired files block the whole update rather than being deleted silently.
9
+
10
+ ## Selective capabilities and compatibility
11
+ Analysis exposes 11 canonical Product skills for requirements/domain/AC/traceability/TechSpec. Discovery exposes 5 for idea/research/MVP/PRD/outcomes. product remains the 16-skill compatibility bundle. Select either or both without duplicate skill IDs. Canonical Product assets are vendored to retain shared references and old template paths; this controls exposed context, not npm download size. There are no new npm packages.
12
+
13
+ ```sh
14
+ aih init --capabilities analysis,architecture,delivery
15
+ aih agents
16
+ aih skills
17
+ aih new-doc srs --capability analysis
18
+ ```
19
+
20
+ For existing consumers edit project.json capabilities on a branch and use update --dry-run/update/check. Product new-doc routes stay usable when the selected profile declares that template. Profile-specific routes default to docs/<profile>; existing artifact outputs take precedence. No existing document is moved.
21
+
22
+ core:project-manager is canonical. product:project-manager and delivery:project-manager remain configured role aliases with their model overrides; canonical_id identifies the same responsibility. Delivery-plan aliases resolve to one locked template but preserve old output routes and old user docs.
23
+
24
+ ## Models, autonomy and budgets
25
+ New seeds keep the host-selected model (provider host, model host-default). Existing agents.json bytes are preserved. init --host claude-code seeds Anthropic native aliases sonnet/haiku/opus only when absent; aliases do not verify account access. Explicit mappings/premium choice still require actual host support. Optional execution.autonomy declares assisted/autopilot, actions and repositories; autopilot needs explicit nonempty action/repository scope. Optional budget declares maxTokens or maxCost/currency. These settings neither grant user authorization nor enforce permissions/quota. Defaults remain assisted by absence; this repository's no-auto-merge rule applies to its own development.
26
+
27
+ Example optional declaration:
28
+ ```json
29
+ {"mode":"autopilot","actions":["read","edit","test","commit","create-pr"],"repositories":["team/project"]}
30
+ ```
31
+
32
+ This is execution.autonomy, not a complete agents.json replacement. Merge/release/deploy/source-write need explicit action scope and actual user authorization plus host/repository rules. Do not manufacture quota or auto-switch to paid models.
33
+
34
+ ## Brownfield and Claude
35
+ ```sh
36
+ aih init --detect --host claude-code --link-claude --claude-skills
37
+ aih doctor
38
+ ```
39
+
40
+ Default init/update preserves CLAUDE.md. --link-claude appends only a managed @AGENTS.md import, preserving BOM/line endings/user text; existing active imports are left alone. The managed block is drift-checked and subsequent updates preserve it. --claude-skills installs locked wrappers directing the host to full canonical .agents skills; custom native skills/settings survive and collisions abort before writes. Verify actual loading with Claude /context and invoke a wrapper in an authorized session. CLI tests do not prove live skill loading.
41
+
42
+ Doctor examines root CLAUDE.md/CLAUDE.local.md and .claude/CLAUDE.md, excluding imports mentioned inside code/comments. It warns about possible instruction shadowing, not a proven host failure. Claude version, ancestor/global files, plugins and settings remain unverified. Official documentation: https://code.claude.com/docs/en/memory and https://code.claude.com/docs/en/skills .
43
+
44
+ Maven detection follows declared module paths at most two levels, 64 POMs, 1 MiB per file and 4 MiB total. Evidence identifies each POM; missing/deeper modules produce warnings. Unsafe paths/symlinks, XML entities/CDATA and interpolation fail rather than being resolved. This is a bounded metadata reader, not general XML/profile/interpolation resolution. Other monorepos need host discovery.
45
+
46
+ Team-owned .agents/.claude skills outside Harness names are preserved and excluded from the Harness catalog/check. check validates locked files, not user skill semantics. The host can load those skills normally. Unowned collisions at a Harness destination fail; no global scanning or adoption occurs.
47
+
48
+ ## Meaningful-step checkpoint and recovery
49
+ Use existing OpenSpec design/tasks/decisions/evidence as authoritative work records. Save a compact machine checkpoint after meaningful steps and before external side effects; do not copy chat history or secrets. See the [checkpoint fixture](examples/checkpoint.json).
50
+
51
+ ```sh
52
+ aih checkpoint change-id --report handoff.json
53
+ aih resume change-id
54
+ aih checkpoint change-id --report next-handoff.json --expected <prior-checkpoint-sha256>
55
+ ```
56
+
57
+ Checkpoint requires an existing change and intact installation. Baseline/evidence paths are project-relative, local regular files with SHA-256 and 1 MiB limits. Completed tasks/operations need evidence; receipts are producer-declared. Replacements require the observed previous digest and preserve previous bytes in checkpoint-history. This is trusted-workspace compare-before-write, not a cross-host database transaction.
58
+
59
+ Resume is read-only: flag stale baseline and unknown/prepared side effects; check actual source/remote state before retry. Do not recreate PRs/publications whose outcome is unknown. External source revisions are declarations and need host reconciliation. Omit usage or use null when unknown; measured cost needs source/currency. Evidence drift blocks recovery until reconciled. Interrupted work before a checkpoint may still need reconstruction.
60
+
61
+ ## Verification, evaluation and rollback
62
+ Use existing adaptive verification/report/TechSpec contracts and source-write policy. UAT and operational feedback update the existing backlog/proposal, not accepted scope automatically. BA domain work includes glossary/data dictionary/state/decision tables when relevant. Required runtime/source publication checks stay BLOCKED/NOT_RUN when inaccessible.
63
+
64
+ Local tests and real tarball smoke validate contracts, preservation, drift, alias routes and recovery; live agents remain unscored until authorized host/model/budget. For 18-run manually entered comparison use [real-task protocol](../evals/real-task-comparison.md) and scripts/compare-tasks.js; missing observations remain null.
65
+
66
+ Review update --dry-run/update/check, snapshot Git diff and changed catalog. No custom configs, source documents, native settings or work records are automatically migrated. Re-export eval reports because bundle/dataset hashes change. Revert the consumer snapshot commit to roll back. Suggested next release is minor with retained old module/role/template routes and explicit retired-skill migration; consumers depending on retired recipes must review this behavioral change before upgrading.
@@ -104,3 +104,7 @@ scoped context, round checkpoint and actual checks; do not claim JSON enforced t
104
104
  ## Resume and lifecycle
105
105
 
106
106
  Use [Continuous development](continuous-development.md). Store baseline/tested revisions, decisions, blockers, remaining work and next action in the existing OpenSpec tasks handoff. Re-read actual sources on resume and invalidate affected stale evidence. Keep implementation complete, merged and released distinct; supplied feedback remains proposed scope until accepted.
107
+
108
+ ## Agent-first routing and PM aliases
109
+
110
+ [Canonical Project Manager](../core/agents/project-manager.md) owns delivery. Product/Delivery PM IDs are compatibility aliases; route by canonical_id, not separate workers. Analysis/Discovery agents use canonical Product contracts above. Preferred skills are explicit; optional perspectives need not be installed. See [Agent-first migration](agent-first.md).
@@ -152,3 +152,7 @@ See [Adaptive verification and TechSpec](adaptive-verification.md) for read-only
152
152
  ## Continuous development
153
153
 
154
154
  The [continuous-development workflow](continuous-development.md) composes existing Core and optional Product/Architecture/Delivery contracts. Baseline/impact and handoff sections extend existing OpenSpec Markdown templates; no schema, runtime, state store or CLI command is added. Hosts reconcile revisions and perform authorized section edits; structural readiness cannot enforce semantic freshness.
155
+
156
+ ## Agent-first changes (unreleased)
157
+
158
+ Optional capability profiles declare asset_owner for a canonical owner; loading validates subset membership, and installation vendors canonical assets while exposing selected skills once. Optional agent/template aliases retain old IDs/routes. Root CLAUDE managed import and native skill wrappers are opt-in locked payloads; external native settings remain project-owned. Checkpoint commands store declarations/history and compute local drift without a runtime/state server. See [Agent-first migration](agent-first.md).
package/docs/cli.md CHANGED
@@ -159,3 +159,7 @@ local fallback. Configured output contracts require reviewed artifact-impact.jso
159
159
  review stage requires declared completion/evidence. No remote calls, source writes or approval claims.
160
160
 
161
161
  See [Adaptive verification and TechSpec](adaptive-verification.md) for read-only discovery, evidence reports and selective technical documentation.
162
+
163
+ ## Agent-first additions (unreleased)
164
+
165
+ aih agents shows canonical IDs, skill preferences and model declarations. init --host claude-code seeds a native preset only when agents.json is absent. init/update --link-claude and --claude-skills opt in to managed import/wrappers; native settings remain user-owned. checkpoint <id> --report saves project-owned recovery state; --expected supplies prior digest for replacement. resume <id> is read-only. See [Agent-first guide](agent-first.md). No command launches agents, probes providers, merges or measures quota.
@@ -86,3 +86,7 @@ records. `aih eval --scope all` exports scenarios; it does not run a model. Prod
86
86
  its optional document templates/TechSpec skill. Existing docs/configs/changes are preserved on update;
87
87
  add missing baseline/handoff sections selectively, do not regenerate old changes. Revert the consumer
88
88
  installation commit to roll back; re-export evaluations after bundle hashes change.
89
+
90
+ ## Agent-first checkpoint additions (unreleased)
91
+
92
+ Use aih agents for canonical responsibilities and preferred skills; load only needed perspectives. For a machine-readable meaningful-step handoff use aih checkpoint <id> --report file.json and aih resume <id>. Keep design/tasks/decisions and evidence authoritative; checkpoint references them instead of copying chat. Reconcile baseline drift and unknown side effects before retry; quota/usage remains unknown without actual host data. See [Agent-first guide](agent-first.md).
@@ -114,7 +114,7 @@ aih eval --scope all # dataset/review template, không gọi model
114
114
  aih check
115
115
  ```
116
116
 
117
- Dùng Core review/TDD và `harness-astro-performance` để ghi bằng chứng build/browser thực chạy, cùng `harness-astro-microfrontend` khi đánh giá split. Hoàn tất spec → code → tests → human PR review. Harness không deploy/merge tự động.
117
+ Dùng Core review/TDD và `harness-astro-performance` để ghi bằng chứng build/browser thực chạy, và SA/approved ADR khi có yêu cầu deployment độc lập. Hoàn tất spec → code → tests → human PR review. Harness không deploy/merge tự động.
118
118
 
119
119
  ## Tài liệu chính thức
120
120
 
@@ -0,0 +1,20 @@
1
+ {
2
+ "schema_version": 1,
3
+ "change_id": "change-id",
4
+ "phase": "implementation",
5
+ "summary": "Draft handoff; replace with actual evidence",
6
+ "timestamp": "2026-10-13T10:00:00Z",
7
+ "baseline": [],
8
+ "completed": [],
9
+ "pending": [
10
+ {
11
+ "id": "task-1",
12
+ "summary": "Continue scoped work"
13
+ }
14
+ ],
15
+ "in_progress": null,
16
+ "blockers": [],
17
+ "next_action": "Inspect actual baseline and populate references",
18
+ "external_sources": [],
19
+ "operations": []
20
+ }
@@ -56,13 +56,11 @@ Lệnh `new-change` **chỉ tạo draft**, không validate/approve spec. Gate: r
56
56
  ~~~bash
57
57
  aih skill harness-java-spring-spring-api
58
58
  aih skill harness-tdd
59
- aih skill harness-java-spring-database-migration
60
- aih skill harness-java-spring-kafka-outbox
59
+ aih skill harness-review
61
60
  ~~~
62
61
 
63
62
  - `spring-api`: controller/service/repository theo pattern hiện có, tenant-scope server-side, DTO và HTTP contract.
64
- - `database-migration`: chỉ dùng **khi đổi schema**; thiết kế expand → compatible deploy → contract, rollback/data-loss risk.
65
- - `kafka-outbox`: chỉ dùng **khi có event publication**; transactional write, duplicate consumer delivery, retry/dead-letter.
63
+ - Schema, messaging và deployment choices theo approved SA/ADR và tooling thực tế. Khi chưa có quyết định quan trọng, SA đưa alternatives/trade-offs và hỏi owner trước implementation; không dùng recipe từ adapter.
66
64
  - `harness-tdd`: negative auth test, missing resource, validation, successful request, regression. Không tạo implementation Kafka/DB nếu requirement không cần.
67
65
 
68
66
  Lệnh verify ứng dụng **tùy repo** — dưới đây chỉ là ví dụ nếu có Maven wrapper:
@@ -41,7 +41,8 @@ Mở thư mục project trong công cụ AI, rồi gửi:
41
41
 
42
42
  Bạn có thể giao ý tưởng, tài liệu BA hoặc task code. Không cần gọi từng agent/skill.
43
43
  Với web/mobile, giao màn hình hoặc tính năng theo common/API/state/navigation hiện có; [skills đã có](frontend-mobile.md).
44
- Nếu công cụ chưa tự nạp hướng dẫn, xem [cách cấu hình công cụ AI](tool-setup/README.md).
44
+ Xem [setup theo AI tool](tool-setup/README.md) cho Codex, Claude Code, Cursor, Copilot, Gemini CLI và Kiro:
45
+ phân biệt cài tool, cài Harness và kiểm tra instructions đã được đọc.
45
46
  Lệnh `setup` chỉ xuất gợi ý thiết lập, không phải bước bắt buộc để bắt đầu.
46
47
 
47
48
  Review diff và test, rồi commit `AGENTS.md`, `.harness/`, `.agents/skills/` cùng code.
@@ -80,6 +81,6 @@ Dùng thường xuyên có thể cài global: `npm install -g @manhd_d/ai-harnes
80
81
  ## Docs/UI destinations
81
82
  For idea-driven or existing-doc work, ask the AI to reuse or clarify input/output destinations,
82
83
  canonical owners and source-write scope. Record them in project-owned artifacts.json/integrations.json;
83
- `aih artifacts` shows declarations. See [Artifact contract](artifact-contract.md).
84
+ `npx --yes @manhd_d/ai-harness artifacts` shows declarations. See [Artifact contract](artifact-contract.md).
84
85
 
85
86
  For successive features, bugfixes or a resumed session, give the host a normal request. It follows [Continuous development](continuous-development.md), rechecks the baseline and maintains only affected docs.
@@ -0,0 +1,32 @@
1
+ # AI Harness
2
+
3
+ [English](../../README.md) · [Tiếng Việt](README.vi.md) · [简体中文](README.zh-CN.md) · **Español**
4
+
5
+ Agent workflows reutilizables para desarrollar software: **Requirements → Design → Code → Test → Review.**
6
+
7
+ Entrega una idea, docs existentes o un change request a tu AI coding tool. Harness ayuda a inspeccionar el proyecto, aclarar decisiones, implementar el scope aceptado y mantener los spec/docs afectados. Carga solo los roles y skills necesarios.
8
+
9
+ Los Core workflows sirven para cualquier proyecto. El stack support es opcional y no elige infrastructure ni architecture.
10
+
11
+ Requiere Node.js 22+. Ejecuta en el directorio del proyecto:
12
+
13
+ ```bash
14
+ npx --yes @manhd_d/ai-harness init
15
+ ```
16
+
17
+ `npx` no instala el command global `aih`. Comprueba con `npx --yes @manhd_d/ai-harness check` y abre el mismo proyecto en tu AI tool. [Setup común](../tool-setup/README.md).
18
+
19
+ > Read AGENTS.md. Inspect this project and its approved decisions. Implement [task], run appropriate checks and maintain affected docs.
20
+
21
+ El host ejecuta tests y controla tools, delegation y permissions. MCP/connector/API pueden aportar input con acceso autorizado. init --detect identifica stacks compatibles; check comprueba la integrity de Harness.
22
+
23
+ | AI tool | Setup |
24
+ | --- | --- |
25
+ | **Codex** | [Guía](../tool-setup/codex.md) |
26
+ | **Claude Code** | [Guía](../tool-setup/claude-code.md) |
27
+ | **Cursor** | [Guía](../tool-setup/cursor.md) |
28
+ | **GitHub Copilot** | [Guía](../tool-setup/copilot.md) |
29
+ | **Gemini CLI** | [Guía](../tool-setup/gemini-cli.md) |
30
+ | **Kiro** | [Guía](../tool-setup/kiro.md) |
31
+
32
+ [Docs y ejemplos](../README.md) · [Getting started](../getting-started.md) · [Input/output](../artifact-contract.md) · [Agent configuration](../agent-configuration.md) · [Continuous development](../continuous-development.md) · [MIT](../../LICENSE)
@@ -1,57 +1,32 @@
1
1
  # AI Harness
2
2
 
3
- [English](../../README.md) · **Tiếng Việt**
3
+ [English](../../README.md) · **Tiếng Việt** · [简体中文](README.zh-CN.md) · [Español](README.es.md)
4
4
 
5
- **Bộ hướng dẫn cho AI phát triển project theo workflow: Requirements → Code → Test → Review.**
5
+ Agent workflows tái sử dụng cho phát triển phần mềm: **Requirements → Design → Code → Test → Review.**
6
6
 
7
- Cài bộ hướng dẫn vào project, rồi giao việc cho công cụ AI bạn đang dùng.
7
+ Đưa ý tưởng, docs có sẵn hoặc change request cho AI coding tool. Harness giúp AI đọc project, làm rõ quyết định, triển khai scope đã chấp nhận và maintain spec/docs liên quan. Chỉ dùng roles và skills cần cho task.
8
8
 
9
- ## Hỗ trợ workflow nào?
9
+ Core workflows dùng được với mọi project. Stack support là tùy chọn; không tự chọn infrastructure hay architecture.
10
10
 
11
- | Workflow | Outputs |
12
- | --- | --- |
13
- | **BA / PO — Business analysis & product** | Từ ý tưởng hoặc docs có sẵn đến BRD, PRD, SRS, user stories và acceptance criteria. |
14
- | **SA — Solution architecture** | Architecture, non-functional requirements, technical decisions và change-impact analysis. |
15
- | **PM — Delivery planning** | Delivery phases, dependencies, risks và scope changes. |
16
- | **Dev / QA — Implementation & testing** | Feature implementation, debugging, tests và code review theo project conventions. |
17
- | **UI/UX & DevOps** | UI design, CI/CD, deployment và operations guidance khi cần. |
18
-
19
- Hỗ trợ Spring Boot, React/Next.js, React Native/Expo, Python AI/RAG, Astro và Kubernetes.
20
- Chỉ chọn phần cần dùng; task nhỏ không cần đủ bộ docs hay spec. [Chọn stack & module](../../docs/getting-started.md).
21
-
22
- ## Chạy ở đâu?
23
-
24
- | Công cụ AI | Cách sử dụng | Hướng dẫn |
25
- | --- | --- | --- |
26
- | **Codex** | CLI hoặc extension trong IDE | [Cài đặt & thiết lập](../../docs/tool-setup/codex.md) |
27
- | **Claude Code** | Chạy `claude` trong terminal của project | [Cài đặt & thiết lập](../../docs/tool-setup/claude-code.md) |
28
- | **Cursor** | Mở project, giao việc trong Agent | [Cài đặt & thiết lập](../../docs/tool-setup/cursor.md) |
29
- | **GitHub Copilot** | Agent trong IDE hoặc Copilot CLI | [Cài đặt & thiết lập](../../docs/tool-setup/copilot.md) |
30
- | **Gemini CLI** | Chạy `gemini` trong terminal của project | [Cài đặt & thiết lập](../../docs/tool-setup/gemini-cli.md) |
31
-
32
- Harness cài hướng dẫn; công cụ AI thực hiện công việc. Cách nạp hướng dẫn tùy công cụ, theo link trên.
33
-
34
- ## Quick start
35
-
36
- Cần **Node.js 22+** và một công cụ AI ở bảng trên. Chạy trong thư mục project:
11
+ Cần Node.js 22+. Chạy trong project:
37
12
 
38
13
  ```bash
39
- npx --yes @manhd_d/ai-harness init --detect
14
+ npx --yes @manhd_d/ai-harness init
40
15
  ```
41
16
 
42
- Mở công cụ AI tại cùng project, rồi gửi:
43
-
44
- > Đọc AGENTS.md, khảo sát project và ghi context cần thiết vào .harness/local.md.
45
- > Thực hiện yêu cầu: [mô tả công việc]. Chạy test phù hợp và báo cáo kết quả.
46
-
47
- Bạn giao việc bình thường, không cần gọi từng agent, skill hay mở chat riêng cho từng vai.
48
- Nếu `--detect` chưa nhận diện được stack, [chọn module thủ công](../../docs/getting-started.md).
49
- `aih check` chỉ kiểm tra file Harness; tính năng đúng hay chưa cần test của project và review.
17
+ `npx` không cài global command `aih`. Kiểm tra bằng `npx --yes @manhd_d/ai-harness check`, rồi mở cùng project trong AI tool. [Setup chung](../tool-setup/README.md).
50
18
 
51
- [Getting started](../../docs/getting-started.md) · [Docs & examples](../../docs/README.md) · [Input/output & integrations](../../docs/artifact-contract.md) · [Model/agent configuration](../../docs/agent-configuration.md)
19
+ > Read AGENTS.md. Inspect this project and its approved decisions. Implement [task], run appropriate checks and maintain affected docs.
52
20
 
53
- Đóng góp: [Contributing](../../CONTRIBUTING.md) · [Bảo trì Harness](../../docs/harness-maintenance.md) · [MIT](../../LICENSE).
21
+ Host chạy tests và quản lý tools, delegation, permissions. MCP/connector/API có thể cung cấp input khi host có quyền truy cập. init --detect nhận diện stack hỗ trợ; check kiểm tra integrity của Harness.
54
22
 
55
- [Adaptive verification & TechSpec](../adaptive-verification.md): verification plan theo project, evidence và cập nhật docs theo scope.
56
-
57
- [Continuous development](../continuous-development.md): phát triển qua nhiều changes, kiểm tra lại baseline và duy trì đúng phần tài liệu bị ảnh hưởng.
23
+ | AI tool | Setup |
24
+ | --- | --- |
25
+ | **Codex** | [Hướng dẫn](../tool-setup/codex.md) |
26
+ | **Claude Code** | [Hướng dẫn](../tool-setup/claude-code.md) |
27
+ | **Cursor** | [Hướng dẫn](../tool-setup/cursor.md) |
28
+ | **GitHub Copilot** | [Hướng dẫn](../tool-setup/copilot.md) |
29
+ | **Gemini CLI** | [Hướng dẫn](../tool-setup/gemini-cli.md) |
30
+ | **Kiro** | [Hướng dẫn](../tool-setup/kiro.md) |
31
+
32
+ [Docs & examples](../README.md) · [Getting started](../getting-started.md) · [Input/output](../artifact-contract.md) · [Agent configuration](../agent-configuration.md) · [Continuous development](../continuous-development.md) · [MIT](../../LICENSE)
@@ -0,0 +1,32 @@
1
+ # AI Harness
2
+
3
+ [English](../../README.md) · [Tiếng Việt](README.vi.md) · **简体中文** · [Español](README.es.md)
4
+
5
+ 可复用的软件开发 Agent workflows: **Requirements → Design → Code → Test → Review.**
6
+
7
+ 把想法、已有 docs 或 change request 交给 AI coding tool。Harness 帮助 AI 检查项目、澄清待定决策、实现已确认的 scope,并维护相关 spec/docs。只加载任务需要的 roles 和 skills。
8
+
9
+ Core workflows 可用于任何项目。Stack support 是可选的,不会自动选择 infrastructure 或 architecture。
10
+
11
+ 需要 Node.js 22+。在项目目录运行:
12
+
13
+ ```bash
14
+ npx --yes @manhd_d/ai-harness init
15
+ ```
16
+
17
+ `npx` 不会安装全局 `aih` command。使用 `npx --yes @manhd_d/ai-harness check` 检查,然后在 AI tool 中打开同一项目。[通用 Setup](../tool-setup/README.md)。
18
+
19
+ > Read AGENTS.md. Inspect this project and its approved decisions. Implement [task], run appropriate checks and maintain affected docs.
20
+
21
+ Host 执行 tests,并控制 tools、delegation 和 permissions。MCP/connector/API 可在 host 获得访问权限后提供 input。init --detect 用于支持的 stack;check 检查 Harness integrity。
22
+
23
+ | AI tool | Setup |
24
+ | --- | --- |
25
+ | **Codex** | [使用指南](../tool-setup/codex.md) |
26
+ | **Claude Code** | [使用指南](../tool-setup/claude-code.md) |
27
+ | **Cursor** | [使用指南](../tool-setup/cursor.md) |
28
+ | **GitHub Copilot** | [使用指南](../tool-setup/copilot.md) |
29
+ | **Gemini CLI** | [使用指南](../tool-setup/gemini-cli.md) |
30
+ | **Kiro** | [使用指南](../tool-setup/kiro.md) |
31
+
32
+ [Docs 与示例](../README.md) · [Getting started](../getting-started.md) · [Input/output](../artifact-contract.md) · [Agent configuration](../agent-configuration.md) · [Continuous development](../continuous-development.md) · [MIT](../../LICENSE)
@@ -1,6 +1,6 @@
1
- # Skill matrix — 70 skills, 13 nhóm module
1
+ # Skill matrix — 66 skills, 15 nhóm module
2
2
 
3
- Đây là bảng tra cứu **ID thật** theo `SKILL.md` trong source trên `main` (6 Core, 42 capability, 22 adapter). Dùng khi cần chuyển từ [Full SDLC](end-to-end-workflow.md) tới một skill cụ thể, không nạp toàn bộ 70 skill vào prompt.
3
+ Đây là bảng tra cứu **ID thật** theo `SKILL.md` trong source trên `main` (6 Core, 42 capability, 18 adapter). Dùng khi cần chuyển từ [Full SDLC](end-to-end-workflow.md) tới một skill cụ thể, không nạp toàn bộ 66 skill vào prompt.
4
4
 
5
5
  **Cách dùng:** `aih skills` xem skills đã cài, sau đó `aih skill harness-...` lấy nội dung. Danh mục này mô tả chức năng; **không** có nghĩa `aih` thực thi skills hoặc agent. Tech adapters và capabilities chỉ xuất hiện trong consumer khi được chọn; Core dùng chung.
6
6
 
@@ -84,8 +84,6 @@
84
84
 
85
85
  | Skill ID (nguồn) | Khi nào dùng | Mục đích | Output mong đợi |
86
86
  | --- | --- | --- | --- |
87
- | [`harness-java-spring-database-migration`](../adapters/java-spring/skills/harness-java-spring-database-migration/SKILL.md) | DB change | Expand/migrate/contract theo release tương thích | Versioned migration và recovery evidence |
88
- | [`harness-java-spring-kafka-outbox`](../adapters/java-spring/skills/harness-java-spring-kafka-outbox/SKILL.md) | Async events | Outbox transaction và consumer dedupe | Event implementation + failure tests |
89
87
  | [`harness-java-spring-spring-api`](../adapters/java-spring/skills/harness-java-spring-spring-api/SKILL.md) | Backend API | Authorization resource scoped, API contract | Endpoint + auth/contract tests |
90
88
 
91
89
  ## React / Next.js adapter (4)
@@ -114,7 +112,7 @@
114
112
  | [`harness-ai-python-tool-safety`](../adapters/ai-python/skills/harness-ai-python-tool-safety/SKILL.md) | Agent tools | Bounded tools, explicit auth, no escalation | Policy wrapper + security tests |
115
113
 
116
114
 
117
- ## Astro adapter (6)
115
+ ## Astro adapter (4)
118
116
 
119
117
  | Skill ID (nguồn) | Khi nào dùng | Mục đích | Output mong đợi |
120
118
  | --- | --- | --- | --- |
@@ -122,8 +120,6 @@
122
120
  | [`harness-astro-islands`](../adapters/astro/skills/harness-astro-islands/SKILL.md) | React Islands | Hydrate tương tác có chọn lọc, không nhầm Islands với MFE | Island component và UX tests |
123
121
  | [`harness-astro-seo`](../adapters/astro/skills/harness-astro-seo/SKILL.md) | SEO | Metadata, sitemap, nội dung hữu ích và a11y | Trang có metadata và kiểm chứng HTML |
124
122
  | [`harness-astro-performance`](../adapters/astro/skills/harness-astro-performance/SKILL.md) | Performance | JS budget, lazy loading, Web Vitals thực đo | Benchmark/build evidence |
125
- | [`harness-astro-cloudflare`](../adapters/astro/skills/harness-astro-cloudflare/SKILL.md) | Deploy | Static/CDN trước, Workers khi cần backend có kiểm soát | Kế hoạch Cloudflare và approval |
126
- | [`harness-astro-microfrontend`](../adapters/astro/skills/harness-astro-microfrontend/SKILL.md) | Scale | Lộ trình tách công cụ thành deploy riêng nếu thực cần | ADR/MFE migration checklist |
127
123
 
128
124
  ## Kubernetes adapter (3)
129
125
 
@@ -168,3 +164,7 @@ Product → Architecture → Delivery → Core/adapter uses [Solution workflow](
168
164
  ## Continuous development
169
165
 
170
166
  [Continuous development](continuous-development.md) composes existing Core spec/debugging/tdd/verification/review with Product business-analysis/acceptance-criteria/traceability/backlog/TechSpec, Architecture change-impact and Delivery scope-change skills. Only affected perspectives are loaded; no new role or skill is required.
167
+
168
+ ## Selective Product profiles
169
+
170
+ Analysis exposes 11 and Discovery 5 canonical Product skills. IDs and source ownership stay Product; selecting both or the compatibility product bundle exposes each skill once. Profiles add module choices, not duplicate skill IDs. Canonical assets are vendored for valid shared references; this is selective context, not a smaller npm download.