harnessed 4.5.1 → 4.7.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/README.md +38 -3
- package/bin/harnessed-inject-state.mjs +11 -0
- package/dist/cli.mjs +629 -298
- package/dist/cli.mjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/manifests/optional/codegraph.yaml +6 -4
- package/manifests/optional/ecc.ee5-answers.json +13 -0
- package/manifests/optional/ecc.yaml +64 -0
- package/messages/en.json +4 -1
- package/messages/zh-Hans.json +4 -1
- package/package.json +1 -1
- package/workflows/capabilities.yaml +120 -0
package/dist/index.mjs
CHANGED
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../package.json","../src/index.ts"],"names":[],"mappings":";AAAA,IAAA,eAAA,GAAA;AAAA,EAEE,OAAA,EAAW,OAkGb,CAAA;;;AC/FO,IAAM,UAAU,eAAA,CAAI","file":"index.mjs","sourcesContent":["{\n \"name\": \"harnessed\",\n \"version\": \"4.
|
|
1
|
+
{"version":3,"sources":["../package.json","../src/index.ts"],"names":[],"mappings":";AAAA,IAAA,eAAA,GAAA;AAAA,EAEE,OAAA,EAAW,OAkGb,CAAA;;;AC/FO,IAAM,UAAU,eAAA,CAAI","file":"index.mjs","sourcesContent":["{\n \"name\": \"harnessed\",\n \"version\": \"4.7.0\",\n \"description\": \"AI coding harness package manager + composition orchestrator\",\n \"type\": \"module\",\n \"license\": \"Apache-2.0\",\n \"author\": \"easyinplay\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/easyinplay/harnessed.git\"\n },\n \"homepage\": \"https://github.com/easyinplay/harnessed#readme\",\n \"bugs\": \"https://github.com/easyinplay/harnessed/issues\",\n \"keywords\": [\n \"claude-code\",\n \"ai-harness\",\n \"package-manager\",\n \"composition\",\n \"skill-pack\",\n \"mcp\",\n \"orchestrator\"\n ],\n \"engines\": {\n \"node\": \">=22.0.0\"\n },\n \"packageManager\": \"pnpm@10.12.0\",\n \"bin\": {\n \"harnessed\": \"./dist/cli.mjs\",\n \"harnessed-inject-state\": \"./bin/harnessed-inject-state.mjs\"\n },\n \"main\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"default\": \"./dist/index.mjs\"\n },\n \"./schemas\": {\n \"types\": \"./dist/schemas/index.d.ts\",\n \"import\": \"./dist/schemas/index.mjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"files\": [\n \"dist\",\n \"bin\",\n \"manifests\",\n \"messages\",\n \"workflows\",\n \"routing\",\n \"config-templates\",\n \"schemas\",\n \"README.md\",\n \"LICENSE\",\n \"NOTICE\",\n \"THIRD-PARTY-NOTICES.md\"\n ],\n \"scripts\": {\n \"dev\": \"tsup --watch\",\n \"build\": \"tsc --noEmit && tsup\",\n \"build:schema\": \"node ./scripts/build-schema.mjs\",\n \"validate:schema\": \"node ./scripts/validate-schema.mjs\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"vitest run --passWithNoTests\",\n \"test:watch\": \"vitest\",\n \"test:coverage\": \"vitest run --coverage --passWithNoTests\",\n \"bench\": \"vitest bench --run\",\n \"lint\": \"biome check .\",\n \"lint:fix\": \"biome check --write .\",\n \"format\": \"biome format --write .\"\n },\n \"dependencies\": {\n \"@anthropic-ai/claude-agent-sdk\": \"0.3.142\",\n \"@clack/prompts\": \"^0.10.1\",\n \"@sinclair/typebox\": \"^0.34.49\",\n \"ajv\": \"^8.20.0\",\n \"ajv-errors\": \"^3.0.0\",\n \"ajv-formats\": \"^3.0.1\",\n \"commander\": \"^13.0.0\",\n \"diff\": \"^9.0.0\",\n \"expr-eval\": \"^2.0.2\",\n \"picocolors\": \"^1.1.1\",\n \"proper-lockfile\": \"^4.1.2\",\n \"yaml\": \"^2.9.0\"\n },\n \"devDependencies\": {\n \"@biomejs/biome\": \"^2.0.0\",\n \"@types/node\": \"^22.10.0\",\n \"@types/proper-lockfile\": \"^4.1.4\",\n \"@vitest/coverage-v8\": \"^4.0.0\",\n \"tsup\": \"^8.3.0\",\n \"typescript\": \"^5.6.0\",\n \"vitest\": \"^4.0.0\"\n },\n \"pnpm\": {\n \"onlyBuiltDependencies\": [\n \"esbuild\"\n ]\n }\n}\n","// Main library entry — re-exports public APIs.\n// phase 1.1 batch 1: skeleton only; schema validator wired in batch 2 (T3+).\n\nimport pkg from '../package.json' with { type: 'json' }\n\nexport const VERSION = pkg.version\n"]}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# yaml-language-server: $schema=../../schemas/manifest.v1.schema.json
|
|
2
|
-
# OPT-IN catalog manifest — lives in manifests/optional/ so `
|
|
3
|
-
# globs only manifests/tools + manifests/skill-packs) never pulls it
|
|
4
|
-
# profile
|
|
5
|
-
#
|
|
2
|
+
# OPT-IN catalog manifest — lives in manifests/optional/ so `harnessed setup`
|
|
3
|
+
# Step B (which globs only manifests/tools + manifests/skill-packs) never pulls it
|
|
4
|
+
# into the base profile (no auto-install). It IS installable on demand: explicit
|
|
5
|
+
# `harnessed install codegraph` resolves manifests/optional/ as the third tier and
|
|
6
|
+
# runs the npm-cli method below. CodeGraph ships its own installer; harnessed
|
|
7
|
+
# catalogs + detects only.
|
|
6
8
|
apiVersion: harnessed/v1
|
|
7
9
|
kind: Manifest
|
|
8
10
|
metadata:
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"upstream": "github.com/affaan-m/ECC",
|
|
3
|
+
"created_at": "2026-06-17T00:00:00.000Z",
|
|
4
|
+
"author": "easyinplay",
|
|
5
|
+
"q1_reusable_surface": "真 reusable surface。ECC 是稳定分发的 CC plugin 上游 (marketplace ecc@ecc),提供 ~55 个 dev domain-pattern 知识库 + 28 个 per-language reviewer/build-resolver — 长期可复用的能力源,非临时 wrapper。A posture 只收能力片 (Bucket 11 加性 + verify alias),不收 ECC 的 orchestration loop。",
|
|
6
|
+
"q2_name_fit": "名字 fit (已是 plugin id ecc@ecc)。命名冲突: 存在且已在 ADR-0034 §3 de-confliction 矩阵处理 — ECC 的 review/orchestration/learn/checkpoint 与 gstack/gsd/superpowers/harnessed checkpoint 引擎重名。Bucket 11 加性 entry 走 domain/cost/hook 正交 fires_when 轴 (零命名冲突);per-language reviewer 走 alias-收编挂到现有 verify capability。",
|
|
7
|
+
"q3_overlap": "大量 overlap — ECC 是与 GSD/superpowers/gstack 平行的完整栈。已在 ADR-0034 逐 family 处理: 加性区 (domain/cost/hook, 零 overlap) / alias-收编区 (verify 维度, priority.yaml 仲裁单一 fire) / 碰撞区 (orchestration/review/learning/multi-agent/token, 默认 NOT wire) / 硬排除区 (checkpoint/ledger/compact/learning keystone 引擎)。枚举 (246 skills/61 agents) 已核对 partition 站得住。",
|
|
8
|
+
"q4_concept_vs_identity": "import 概念。收的是 domain-pattern 知识 + per-language review 能力, NOT import ECC 的产品身份/orchestration/做事方式。不 vendor 代码 (装配主义)。A posture 明确边界: 能力片可控同化, ECC 的 plan/execute/learn/checkpoint loop 一律不接。",
|
|
9
|
+
"q5_user_understanding": "能。Bucket 11 capability 以 harnessed 自己的 fires_when 语义暴露 (subtask.domain == 'postgres' → postgres pattern), 用户看到的是 harnessed 路由, 无需知道 ECC 存在。per-language reviewer 走现有 verify capability 的 alias 同理。ECC 仅作为 impl 来源, 对用户透明。",
|
|
10
|
+
"ee5_gate": "PASSED",
|
|
11
|
+
"deconfliction_adr": "docs/adr/0034-ecc-assimilation-deconfliction.md",
|
|
12
|
+
"posture": "A (additive-first: domain-pattern starter-set ≤8 + cost/hook + per-language reviewer alias)"
|
|
13
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# yaml-language-server: $schema=../../schemas/manifest.v1.schema.json
|
|
2
|
+
#
|
|
3
|
+
# OPT-IN catalog manifest — lives in manifests/optional/ so `harnessed setup` /
|
|
4
|
+
# install-base (which globs ONLY manifests/tools + manifests/skill-packs) NEVER
|
|
5
|
+
# auto-installs ECC into the base profile. ECC is an optional upstream AND a
|
|
6
|
+
# pre-release (stability=unstable) — users opt in explicitly. harnessed catalogs
|
|
7
|
+
# this manifest + routes a curated subset (capabilities.yaml Bucket 11 + verify
|
|
8
|
+
# aliases, opt-in no-op when ECC absent); the install cmd below is the user-run
|
|
9
|
+
# path (`claude plugin install ecc@ecc`). Sister: manifests/optional/codegraph.yaml.
|
|
10
|
+
#
|
|
11
|
+
# ECC (Affaan Mustafa) selective assimilation — A posture per ADR-0034.
|
|
12
|
+
# ECC is a near-complete PARALLEL stack (its own plan/execute/review/learn/
|
|
13
|
+
# checkpoint/multi-agent). harnessed does NOT wire that; it assimilates ONLY the
|
|
14
|
+
# additive zones (domain-pattern starter-set ≤8 + cost-report/model-route +
|
|
15
|
+
# hookify) and收编s per-language reviewers/build-resolvers as verify-dimension
|
|
16
|
+
# aliases. checkpoint/ledger/compact/learning families are HARD-EXCLUDED (keystone
|
|
17
|
+
# engine collision, same rationale as gsd-execute-phase).
|
|
18
|
+
#
|
|
19
|
+
# De-confliction matrix SoT: docs/adr/0034-ecc-assimilation-deconfliction.md
|
|
20
|
+
# EE-5 gate record: manifests/optional/ecc.ee5-answers.json
|
|
21
|
+
apiVersion: harnessed/v1
|
|
22
|
+
kind: Manifest
|
|
23
|
+
metadata:
|
|
24
|
+
name: ecc
|
|
25
|
+
display_name: ECC (selective domain + verify-alias assimilation, A posture)
|
|
26
|
+
description: ECC selective assimilation per ADR-0034 (A posture) — additive domain-pattern + cost/hook + per-language reviewer alias.
|
|
27
|
+
upstream:
|
|
28
|
+
source: github.com/affaan-m/ECC
|
|
29
|
+
homepage: https://ecc.tools
|
|
30
|
+
repository: https://github.com/affaan-m/ECC.git
|
|
31
|
+
license: MIT
|
|
32
|
+
notice: |
|
|
33
|
+
ECC (Engineering Claude Code) by Affaan Mustafa, distributed via the `ecc`
|
|
34
|
+
Claude Code marketplace. harnessed assimilates a curated subset selectively
|
|
35
|
+
(A posture, de-confliction per ADR-0034) — NOT vendored, NOT wired as a
|
|
36
|
+
parallel stack. Upstream is pre-release (2.0.0-rc.1); stability=unstable.
|
|
37
|
+
spec:
|
|
38
|
+
type: cc-plugin
|
|
39
|
+
component_type: command
|
|
40
|
+
category: engineering
|
|
41
|
+
install_type: skill
|
|
42
|
+
install:
|
|
43
|
+
method: cc-plugin-marketplace
|
|
44
|
+
cmd: "claude plugin marketplace add affaan-m/ECC && claude plugin install ecc@ecc"
|
|
45
|
+
git_ref: ec92b528471df708c2384ebbcc82b390b60f535a
|
|
46
|
+
idempotent_check: "claude plugin list 2>&1 | grep -qw ecc"
|
|
47
|
+
marketplace_source:
|
|
48
|
+
source: github
|
|
49
|
+
repo: affaan-m/ECC
|
|
50
|
+
verify:
|
|
51
|
+
cmd: "claude plugin list 2>&1 | grep -qw ecc"
|
|
52
|
+
timeout_ms: 10000
|
|
53
|
+
uninstall:
|
|
54
|
+
cmd: "claude plugin uninstall ecc@ecc"
|
|
55
|
+
upstream_health:
|
|
56
|
+
stability: unstable
|
|
57
|
+
last_check: "2026-06-17"
|
|
58
|
+
last_known_good_version: 2.0.0-rc.1
|
|
59
|
+
fallback_action: warn
|
|
60
|
+
signed_by: easyinplay
|
|
61
|
+
platforms:
|
|
62
|
+
- linux
|
|
63
|
+
- darwin
|
|
64
|
+
- win32
|
package/messages/en.json
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"agent_teams.missing_nonblocking": " non-blocking — auto-degrades to subagent fan-out\n",
|
|
29
29
|
|
|
30
30
|
"install.manifest_not_found": "error: manifest '{{name}}' not found",
|
|
31
|
-
"install.manifest_not_found.fix": " fix: ensure manifests/tools/{{name}}.yaml
|
|
31
|
+
"install.manifest_not_found.fix": " fix: ensure manifests/tools/{{name}}.yaml, manifests/skill-packs/{{name}}.yaml, or manifests/optional/{{name}}.yaml exists",
|
|
32
32
|
"install.audit_hint": " fix: run 'harnessed audit' to inspect manifest issues",
|
|
33
33
|
"install.success": "installed {{name}}",
|
|
34
34
|
"install.success_with_version": "installed {{name}}@{{version}}",
|
|
@@ -84,6 +84,9 @@
|
|
|
84
84
|
"status.lock_release_hint": " to release: wait for process to finish or delete {{path}}",
|
|
85
85
|
"status.lock_free": "\nlock: free",
|
|
86
86
|
|
|
87
|
+
"here.no_workflow": "no active workflow for this repo ({{path}} has no entry for cwd)",
|
|
88
|
+
"here.no_workflow.hint": " to start: run a stage (e.g. `harnessed gates discuss`) or `harnessed run <workflow>`",
|
|
89
|
+
|
|
87
90
|
"audit_log.no_records_file": "no audit records found ({{path}} does not exist)",
|
|
88
91
|
"audit_log.no_records_empty": "no audit records found (audit.log is empty)",
|
|
89
92
|
"audit_log.jq_missing": "✗ jq not found in PATH — run: harnessed doctor",
|
package/messages/zh-Hans.json
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"agent_teams.missing_nonblocking": " non-blocking — auto-degrades to subagent fan-out\n",
|
|
29
29
|
|
|
30
30
|
"install.manifest_not_found": "error: manifest '{{name}}' not found",
|
|
31
|
-
"install.manifest_not_found.fix": " fix: ensure manifests/tools/{{name}}.yaml
|
|
31
|
+
"install.manifest_not_found.fix": " fix: ensure manifests/tools/{{name}}.yaml, manifests/skill-packs/{{name}}.yaml, or manifests/optional/{{name}}.yaml exists",
|
|
32
32
|
"install.audit_hint": " fix: run 'harnessed audit' to inspect manifest issues",
|
|
33
33
|
"install.success": "installed {{name}}",
|
|
34
34
|
"install.success_with_version": "installed {{name}}@{{version}}",
|
|
@@ -70,6 +70,9 @@
|
|
|
70
70
|
"status.lock_release_hint": " to release: wait for process to finish or delete {{path}}",
|
|
71
71
|
"status.lock_free": "\nlock: free",
|
|
72
72
|
|
|
73
|
+
"here.no_workflow": "当前 repo 无 active workflow({{path}} 中没有 cwd 对应条目)",
|
|
74
|
+
"here.no_workflow.hint": " 开始:运行一个 stage(如 `harnessed gates discuss`)或 `harnessed run <workflow>`",
|
|
75
|
+
|
|
73
76
|
"audit_log.no_records_file": "no audit records found ({{path}} does not exist)",
|
|
74
77
|
"audit_log.no_records_empty": "no audit records found (audit.log is empty)",
|
|
75
78
|
"audit_log.jq_missing": "✗ jq not found in PATH — run: harnessed doctor",
|
package/package.json
CHANGED
|
@@ -137,6 +137,13 @@ capabilities:
|
|
|
137
137
|
since: v2.0
|
|
138
138
|
category: tool-slash-cmd
|
|
139
139
|
description: verify-work parallel fan-out (multi-agent high-confidence findings)
|
|
140
|
+
# ADR-0034 Finding 1 — ECC per-language reviewers收编 as verify-dimension aliases
|
|
141
|
+
# (NOT a parallel Bucket 11 entry; runtime/priority.yaml picks the language-matching
|
|
142
|
+
# one → single fire, no triple-review). Opt-in: no-op when ECC absent.
|
|
143
|
+
aliases:
|
|
144
|
+
- { impl: ecc, cmd: "ecc:python-review" }
|
|
145
|
+
- { impl: ecc, cmd: "ecc:rust-review" }
|
|
146
|
+
- { impl: ecc, cmd: "ecc:go-review" }
|
|
140
147
|
fires_when:
|
|
141
148
|
- phase.stage == 'verify'
|
|
142
149
|
|
|
@@ -311,8 +318,14 @@ capabilities:
|
|
|
311
318
|
since: v2.0
|
|
312
319
|
category: tool-slash-cmd
|
|
313
320
|
description: GSD systematic debugging (overlap with mattpocock /diagnose — alias)
|
|
321
|
+
# ADR-0034 Finding 1 — ECC per-language build-resolvers收编 as debug/verify-dimension
|
|
322
|
+
# aliases (build-failure fix; runtime picks language-matching one). Opt-in: no-op
|
|
323
|
+
# when ECC absent.
|
|
314
324
|
aliases:
|
|
315
325
|
- { impl: mattpocock-skills, cmd: /diagnose }
|
|
326
|
+
- { impl: ecc, cmd: "ecc:rust-build" }
|
|
327
|
+
- { impl: ecc, cmd: "ecc:go-build" }
|
|
328
|
+
- { impl: ecc, cmd: "ecc:build-fix" }
|
|
316
329
|
fires_when:
|
|
317
330
|
- subtask.type == 'debug'
|
|
318
331
|
|
|
@@ -1263,3 +1276,110 @@ capabilities:
|
|
|
1263
1276
|
description: GSD docs-update post-ship doc update
|
|
1264
1277
|
fires_when:
|
|
1265
1278
|
- phase.needs_doc_update == true
|
|
1279
|
+
|
|
1280
|
+
# ============================================================================
|
|
1281
|
+
# Bucket 11 — ECC selective assimilation, A posture (ADR-0034)
|
|
1282
|
+
# ============================================================================
|
|
1283
|
+
#
|
|
1284
|
+
# ECC is a near-complete PARALLEL stack; per ADR-0034 de-confliction matrix
|
|
1285
|
+
# harnessed wires ONLY the additive zones here (domain-pattern starter-set ≤8 +
|
|
1286
|
+
# cost-report + hookify) on ORTHOGONAL fires_when axes (subtask.domain /
|
|
1287
|
+
# needs_cost_report / needs_hook_authoring — no existing entry fires on these).
|
|
1288
|
+
# per-language reviewers/build-resolvers are NOT here — they收编 as verify-
|
|
1289
|
+
# dimension aliases under code-review / gsd-debug (Finding 1). orchestration/
|
|
1290
|
+
# review/learning/multi-agent/checkpoint families are NOT wired / HARD-EXCLUDED.
|
|
1291
|
+
#
|
|
1292
|
+
# Opt-in pattern (sister `codegraph`): NO install_type/plugin_id presence-check —
|
|
1293
|
+
# ECC is an optional upstream; absent ECC just means these cmds no-op (no warn
|
|
1294
|
+
# for non-ECC users). cmd = plugin-namespaced `ecc:<skill>` (sister superpowers).
|
|
1295
|
+
# impl: ecc is a provenance label (open-string per capabilities schema).
|
|
1296
|
+
|
|
1297
|
+
ecc-mcp-server-patterns:
|
|
1298
|
+
impl: ecc
|
|
1299
|
+
cmd: "ecc:mcp-server-patterns"
|
|
1300
|
+
since: v7.1
|
|
1301
|
+
category: tool-slash-cmd
|
|
1302
|
+
description: MCP server design patterns (ECC domain library — CC-harness-builder core)
|
|
1303
|
+
fires_when:
|
|
1304
|
+
- subtask.domain == 'mcp_server'
|
|
1305
|
+
|
|
1306
|
+
ecc-python-patterns:
|
|
1307
|
+
impl: ecc
|
|
1308
|
+
cmd: "ecc:python-patterns"
|
|
1309
|
+
since: v7.1
|
|
1310
|
+
category: tool-slash-cmd
|
|
1311
|
+
description: Python idiom/structure patterns (ECC domain library)
|
|
1312
|
+
fires_when:
|
|
1313
|
+
- subtask.domain == 'python'
|
|
1314
|
+
|
|
1315
|
+
ecc-rust-patterns:
|
|
1316
|
+
impl: ecc
|
|
1317
|
+
cmd: "ecc:rust-patterns"
|
|
1318
|
+
since: v7.1
|
|
1319
|
+
category: tool-slash-cmd
|
|
1320
|
+
description: Rust ownership/idiom patterns (ECC domain library)
|
|
1321
|
+
fires_when:
|
|
1322
|
+
- subtask.domain == 'rust'
|
|
1323
|
+
|
|
1324
|
+
ecc-golang-patterns:
|
|
1325
|
+
impl: ecc
|
|
1326
|
+
cmd: "ecc:golang-patterns"
|
|
1327
|
+
since: v7.1
|
|
1328
|
+
category: tool-slash-cmd
|
|
1329
|
+
description: Go idiom/concurrency patterns (ECC domain library)
|
|
1330
|
+
fires_when:
|
|
1331
|
+
- subtask.domain == 'golang'
|
|
1332
|
+
|
|
1333
|
+
ecc-postgres-patterns:
|
|
1334
|
+
impl: ecc
|
|
1335
|
+
cmd: "ecc:postgres-patterns"
|
|
1336
|
+
since: v7.1
|
|
1337
|
+
category: tool-slash-cmd
|
|
1338
|
+
description: PostgreSQL schema/query/perf patterns (ECC domain library)
|
|
1339
|
+
fires_when:
|
|
1340
|
+
- subtask.domain == 'postgres'
|
|
1341
|
+
|
|
1342
|
+
ecc-docker-patterns:
|
|
1343
|
+
impl: ecc
|
|
1344
|
+
cmd: "ecc:docker-patterns"
|
|
1345
|
+
since: v7.1
|
|
1346
|
+
category: tool-slash-cmd
|
|
1347
|
+
description: Docker/container build patterns (ECC domain library)
|
|
1348
|
+
fires_when:
|
|
1349
|
+
- subtask.domain == 'docker'
|
|
1350
|
+
|
|
1351
|
+
ecc-nextjs-turbopack:
|
|
1352
|
+
impl: ecc
|
|
1353
|
+
cmd: "ecc:nextjs-turbopack"
|
|
1354
|
+
since: v7.1
|
|
1355
|
+
category: tool-slash-cmd
|
|
1356
|
+
description: Next.js + Turbopack frontend patterns (ECC domain library)
|
|
1357
|
+
fires_when:
|
|
1358
|
+
- subtask.domain == 'nextjs'
|
|
1359
|
+
|
|
1360
|
+
ecc-api-design:
|
|
1361
|
+
impl: ecc
|
|
1362
|
+
cmd: "ecc:api-design"
|
|
1363
|
+
since: v7.1
|
|
1364
|
+
category: tool-slash-cmd
|
|
1365
|
+
description: API contract/versioning design patterns (ECC domain library)
|
|
1366
|
+
fires_when:
|
|
1367
|
+
- subtask.domain == 'api_design'
|
|
1368
|
+
|
|
1369
|
+
ecc-cost-tracking:
|
|
1370
|
+
impl: ecc
|
|
1371
|
+
cmd: "ecc:cost-tracking"
|
|
1372
|
+
since: v7.1
|
|
1373
|
+
category: tool-slash-cmd
|
|
1374
|
+
description: LLM cost/token spend reporting (ECC additive — harnessed has no cost report)
|
|
1375
|
+
fires_when:
|
|
1376
|
+
- subtask.needs_cost_report == true
|
|
1377
|
+
|
|
1378
|
+
ecc-hookify-rules:
|
|
1379
|
+
impl: ecc
|
|
1380
|
+
cmd: "ecc:hookify-rules"
|
|
1381
|
+
since: v7.1
|
|
1382
|
+
category: tool-slash-cmd
|
|
1383
|
+
description: Author CC hooks from observed behavior (ECC additive — no harnessed equivalent)
|
|
1384
|
+
fires_when:
|
|
1385
|
+
- subtask.needs_hook_authoring == true
|