arggon-harness 0.1.0 → 0.1.2

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 (41) hide show
  1. package/README.md +52 -0
  2. package/config/default-opencode.json +8 -0
  3. package/dist/init.js +149 -5
  4. package/dist/init.js.map +1 -1
  5. package/dist/plugin/engine/types.d.ts +2 -139
  6. package/dist/plugin/engine/types.d.ts.map +1 -1
  7. package/dist/plugin/engine/validator.d.ts +0 -12
  8. package/dist/plugin/engine/validator.d.ts.map +1 -1
  9. package/dist/plugin/engine/validator.js +0 -187
  10. package/dist/plugin/engine/validator.js.map +1 -1
  11. package/dist/plugin/index.d.ts +0 -4
  12. package/dist/plugin/index.d.ts.map +1 -1
  13. package/dist/plugin/index.js +4 -6
  14. package/dist/plugin/index.js.map +1 -1
  15. package/dist/plugin/tools/spec-design-hifi.d.ts +0 -1
  16. package/dist/plugin/tools/spec-design-hifi.d.ts.map +1 -1
  17. package/dist/plugin/tools/spec-design-hifi.js +3 -271
  18. package/dist/plugin/tools/spec-design-hifi.js.map +1 -1
  19. package/dist/plugin/tools/spec-design-wireframe.d.ts +2 -3
  20. package/dist/plugin/tools/spec-design-wireframe.d.ts.map +1 -1
  21. package/dist/plugin/tools/spec-design-wireframe.js +2 -118
  22. package/dist/plugin/tools/spec-design-wireframe.js.map +1 -1
  23. package/dist/plugin/tools/spec-schema-list.d.ts.map +1 -1
  24. package/dist/plugin/tools/spec-schema-list.js +6 -2
  25. package/dist/plugin/tools/spec-schema-list.js.map +1 -1
  26. package/dist/plugin/tools/spec-validate.d.ts.map +1 -1
  27. package/dist/plugin/tools/spec-validate.js +0 -2
  28. package/dist/plugin/tools/spec-validate.js.map +1 -1
  29. package/dist/plugin/tools/util.d.ts +1 -1
  30. package/dist/plugin/tools/util.d.ts.map +1 -1
  31. package/dist/plugin/tools/util.js +35 -2
  32. package/dist/plugin/tools/util.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/agents/orchestrator.md +39 -0
  35. package/src/agents/spec-propose.md +17 -0
  36. package/src/schemas/hybrid.yaml +0 -49
  37. package/src/schemas/spec-driven.yaml +0 -49
  38. package/src/schemas/tdd.yaml +0 -49
  39. package/src/schemas/ui-driven.yaml +104 -0
  40. package/src/skills/cbm-index-repo/SKILL.md +39 -0
  41. package/src/templates/AGENTS.md +37 -0
@@ -1 +1 @@
1
- {"version":3,"file":"spec-schema-list.d.ts","sourceRoot":"","sources":["../../../src/plugin/tools/spec-schema-list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAGxD,wBAAsB,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAyBrF"}
1
+ {"version":3,"file":"spec-schema-list.d.ts","sourceRoot":"","sources":["../../../src/plugin/tools/spec-schema-list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAGxD,wBAAsB,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA6BrF"}
@@ -9,11 +9,15 @@ export async function specSchemaList(_args, ctx) {
9
9
  if (file.endsWith(".yaml")) {
10
10
  const content = await fs.readFile(`${schemasDir}/${file}`, "utf-8");
11
11
  const schema = parseYaml(content);
12
- schemas.push({
12
+ const entry = {
13
13
  name: schema.name,
14
14
  version: schema.version,
15
15
  description: schema.description
16
- });
16
+ };
17
+ if (schema.extends) {
18
+ entry.extends = schema.extends;
19
+ }
20
+ schemas.push(entry);
17
21
  }
18
22
  }
19
23
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"spec-schema-list.js","sourceRoot":"","sources":["../../../src/plugin/tools/spec-schema-list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAS,EAAE,GAAgB;IAC9D,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAA;QACxD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QAE1C,MAAM,OAAO,GAAG,EAAE,CAAA;QAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,UAAU,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;gBACnE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;gBACjC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,QAAQ,EAAE,EAAE,OAAO,EAAE;SACtB,CAAA;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAA;IACzE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"spec-schema-list.js","sourceRoot":"","sources":["../../../src/plugin/tools/spec-schema-list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAEhD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAS,EAAE,GAAgB;IAC9D,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAA;QACxD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QAE1C,MAAM,OAAO,GAAG,EAAE,CAAA;QAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,UAAU,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;gBACnE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;gBACjC,MAAM,KAAK,GAAQ;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,CAAA;gBACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;gBAChC,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACrB,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,QAAQ,EAAE,EAAE,OAAO,EAAE;SACtB,CAAA;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAA;IACzE,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"spec-validate.d.ts","sourceRoot":"","sources":["../../../src/plugin/tools/spec-validate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAkBxD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA4GhG;AAID,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IACnD,OAAO,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;IACnC,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB"}
1
+ {"version":3,"file":"spec-validate.d.ts","sourceRoot":"","sources":["../../../src/plugin/tools/spec-validate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAgBxD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA4GhG;AAID,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;IACnD,OAAO,EAAE;QAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;IACnC,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB"}
@@ -9,8 +9,6 @@ const VALIDATORS = {
9
9
  proposal: Validator.validateProposal,
10
10
  specs: Validator.validateSpecs,
11
11
  "design-tech": Validator.validateDesignTech,
12
- "design-wireframe": Validator.validateDesignWireframe,
13
- "design-hifi": Validator.validateDesignHiFi,
14
12
  tasks: Validator.validateTasks,
15
13
  };
16
14
  export async function specValidate(args, ctx) {
@@ -1 +1 @@
1
- {"version":3,"file":"spec-validate.js","sourceRoot":"","sources":["../../../src/plugin/tools/spec-validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec-validate.js","sourceRoot":"","sources":["../../../src/plugin/tools/spec-validate.ts"],"names":[],"mappings":"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"}
@@ -21,5 +21,5 @@ export declare function parseYaml(content: string): any;
21
21
  * schemas/, templates/, skills/, commands/, and agents/.
22
22
  */
23
23
  export declare const assetRoot: (pluginDir: string) => string;
24
- export declare function loadSchema(pluginDir: string, schemaName: string): Promise<Schema>;
24
+ export declare function loadSchema(pluginDir: string, schemaName: string, seen?: Set<string>): Promise<Schema>;
25
25
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/plugin/tools/util.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC9B;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAE9C;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,GAAI,WAAW,MAAM,KAAG,MAQ7C,CAAA;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIvF"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/plugin/tools/util.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC9B;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAE9C;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,GAAI,WAAW,MAAM,KAAG,MAQ7C,CAAA;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAyC3G"}
@@ -25,9 +25,42 @@ export const assetRoot = (pluginDir) => {
25
25
  // Dev mode: pluginDir = <root>/src/plugin/ → <root>/src
26
26
  return parent;
27
27
  };
28
- export async function loadSchema(pluginDir, schemaName) {
28
+ export async function loadSchema(pluginDir, schemaName, seen) {
29
+ // Circular dependency detection
30
+ if (!seen)
31
+ seen = new Set();
32
+ if (seen.has(schemaName)) {
33
+ const chain = Array.from(seen).join(" -> ");
34
+ throw new Error(`Circular schema inheritance detected: ${chain} -> ${schemaName}`);
35
+ }
36
+ seen.add(schemaName);
29
37
  const schemaPath = path.join(assetRoot(pluginDir), "schemas", `${schemaName}.yaml`);
30
38
  const content = await fs.readFile(schemaPath, "utf-8");
31
- return parseYaml(content);
39
+ const raw = parseYaml(content);
40
+ if (raw.extends) {
41
+ // Recursively load parent schema
42
+ const parent = await loadSchema(pluginDir, raw.extends, seen);
43
+ // Merge: start from a shallow copy of parent, then override with child values
44
+ const merged = {
45
+ name: raw.name,
46
+ version: raw.version,
47
+ description: raw.description || parent.description,
48
+ artifacts: [...parent.artifacts],
49
+ apply: raw.apply || parent.apply,
50
+ extends: raw.extends,
51
+ };
52
+ // Merge artifacts: child overrides matching ids, appends new ones
53
+ for (const childArtifact of raw.artifacts) {
54
+ const existingIndex = merged.artifacts.findIndex(a => a.id === childArtifact.id);
55
+ if (existingIndex >= 0) {
56
+ merged.artifacts[existingIndex] = childArtifact;
57
+ }
58
+ else {
59
+ merged.artifacts.push(childArtifact);
60
+ }
61
+ }
62
+ return merged;
63
+ }
64
+ return raw;
32
65
  }
33
66
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/plugin/tools/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,IAAI,MAAM,SAAS,CAAA;AAa1B,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC3B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAU,EAAE;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;QACrC,8DAA8D;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;IACD,wDAAwD;IACxD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,UAAkB;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,UAAU,OAAO,CAAC,CAAA;IACnF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACtD,OAAO,SAAS,CAAC,OAAO,CAAW,CAAA;AACrC,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/plugin/tools/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,IAAI,MAAM,SAAS,CAAA;AAa1B,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC3B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAU,EAAE;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACtC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE,CAAC;QACrC,8DAA8D;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;IACD,wDAAwD;IACxD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,UAAkB,EAAE,IAAkB;IACxF,gCAAgC;IAChC,IAAI,CAAC,IAAI;QAAE,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IACnC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,OAAO,UAAU,EAAE,CAAC,CAAA;IACpF,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAEpB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,UAAU,OAAO,CAAC,CAAA;IACnF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACtD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAW,CAAA;IAExC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,iCAAiC;QACjC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAE7D,8EAA8E;QAC9E,MAAM,MAAM,GAAW;YACrB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW;YAClD,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;YAChC,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;YAChC,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAA;QAED,kEAAkE;QAClE,KAAK,MAAM,aAAa,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE,CAAC,CAAA;YAChF,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA;YACjD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arggon-harness",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Spec-driven SDLC workflow for OpenCode — plugin, skills, commands, and init system",
5
5
  "type": "module",
6
6
  "main": "dist/plugin/index.js",
@@ -14,6 +14,7 @@ permission:
14
14
  spec_change_status: allow
15
15
  spec_task_progress: allow
16
16
  spec_validate: allow
17
+ codebase-memory-mcp_*: allow
17
18
  external_directory:
18
19
  "/run/media/arggon/HDD/src/externals/opencode/**": allow
19
20
  "/run/media/arggon/HDD/src/externals/open-design/**": allow
@@ -73,6 +74,44 @@ You manage the Harness workflow: explore → propose → apply → verify → ar
73
74
  - **Verify phase** → delegate to `spec-verify` subagent
74
75
  - **Archive phase** → delegate to `spec-archive` subagent
75
76
 
77
+ ### Schema with Design Artifacts (Staged Propose Workflow)
78
+
79
+ When a change's schema includes a `design-html` artifact (visible via `spec_change_status` artifact lists), the propose phase is split into two stages with a human review gate:
80
+
81
+ **Stage 1 — Propose (partial):**
82
+ Delegate to `spec-propose` as usual. The propose agent creates:
83
+ 1. proposal.yaml
84
+ 2. specs/*.yaml
85
+ 3. design-tech.yaml
86
+ 4. design.html
87
+
88
+ (Only for schemas that include design-html. For schemas without,
89
+ the propose agent creates all artifacts in a single pass as normal.)
90
+
91
+ The propose agent then returns control to you (the orchestrator).
92
+
93
+ **Stage 2 — Human Review:**
94
+ After the propose agent returns:
95
+ 1. Read the generated `design.html` file from the change directory
96
+ 2. Present the design to the user using the question tool:
97
+ - Show key details about the design (pages, sections, color direction)
98
+ - Ask: "Do you like the design.html? Should we proceed to wireframe/hifi formalization?"
99
+ - Options: "Yes, looks good" / "No, iterate on it"
100
+ 3. If the user says No:
101
+ - Ask for specific feedback: "What would you like changed?"
102
+ - Continue the propose agent task with the feedback to regenerate design.html
103
+ - Loop back to step 2
104
+ 4. If the user says Yes:
105
+ - Continue the propose agent to create design-wireframe.yaml, design-hifi.yaml, and tasks.yaml
106
+ - Verify completion with spec_change_status
107
+
108
+ **Schema detection:**
109
+ - Call `spec_change_status` on the change to see its artifact list
110
+ - Check if `design-html` appears in the required artifact list
111
+ - If the schema has a `design-html` artifact, follow the staged workflow above
112
+ - If the schema does NOT have `design-html`, use the standard single-pass propose workflow
113
+ - This works for ANY schema with design-html, not just ui-driven
114
+
76
115
  ### Explore Phase: Direct Interaction
77
116
 
78
117
  You are a **thinking partner**, not a task executor. Handle this phase directly — do NOT delegate to a subagent.
@@ -106,6 +106,23 @@ Before generating any artifact, read `spec/config.yaml` for:
106
106
  - Define acceptance criteria
107
107
  - Order by dependency
108
108
 
109
+ ### Design-html Detection (Staged Propose Support)
110
+
111
+ After creating each artifact, check the schema's artifact list (via spec_change_status).
112
+
113
+ If the schema has a `design-html` artifact AND you have just created it:
114
+ 1. Signal to the orchestrator: "design.html created, ready for human review"
115
+ 2. Do NOT continue to design-wireframe, design-hifi, or tasks
116
+ 3. Return control to the orchestrator — the human will review design.html
117
+ 4. The orchestrator will call back to continue when approved
118
+
119
+ This is artifact-based detection — it works for ANY schema that includes
120
+ `design-html` in its artifact list (ui-driven, or any future schema).
121
+
122
+ For schemas without `design-html`:
123
+ - Continue creating artifacts as normal until `isComplete: true`
124
+ - Single-pass propose as usual
125
+
109
126
  ## Guardrails
110
127
 
111
128
  - Read dependency artifacts before creating new ones
@@ -50,55 +50,6 @@ artifacts:
50
50
  - Practical implementation concerns
51
51
  requires: [specs]
52
52
 
53
- - id: design-wireframe
54
- generates: design-wireframe.yaml
55
- description: Page wireframes with layouts, component placements, user flows, and annotations
56
- template: design-wireframe.yaml
57
- optional: true
58
- instruction: |
59
- Create wireframe specifications for the change's UI pages.
60
-
61
- Only create this artifact if the change involves user-facing UI changes.
62
- If the change is backend-only, infrastructure, or has no visual component,
63
- skip this artifact.
64
-
65
- Include:
66
- 1. Pages - list all UI pages/screens with their layout regions
67
- 2. Layout - define regions (header, sidebar, main, footer) with ordering
68
- 3. Components - place UI components (buttons, cards, inputs, etc.) in regions with positions and sizes
69
- 4. Flows - document user navigation paths between pages
70
- 5. Annotations - add notes about constraints, edge cases, design decisions
71
-
72
- Use kebab-case for page IDs, component IDs, and flow IDs.
73
- Position coordinates use a 12-column grid system (0-11).
74
-
75
- The optional html_preview flag generates a visual wireframe preview.
76
- requires: [design-tech]
77
-
78
- - id: design-hifi
79
- generates: design-hifi.yaml
80
- description: High-fidelity design system specification with color, typography, spacing, and components
81
- template: design-hifi.yaml
82
- optional: true
83
- instruction: |
84
- Create a high-fidelity design system specification.
85
-
86
- Only create this artifact if the change requires visual design decisions.
87
- Can be created directly after wireframes, or skipped if only wireframes are needed.
88
-
89
- Include:
90
- 1. Color Palette - primary, secondary, accent, neutral, semantic, and surface colors with hex values
91
- 2. Typography - font families, type scale with sizes/weights/line-heights, hierarchy roles
92
- 3. Spacing - base unit and spacing scale
93
- 4. Component Library - button, card, input, and navigation variants with states
94
- 5. Breakpoints - responsive breakpoints with column counts and rules
95
-
96
- Use hex format (#RRGGBB) for all colors.
97
- The type scale should cover h1-h6, body, caption, and small roles.
98
-
99
- The optional html_preview flag generates a visual style guide preview.
100
- requires: [design-wireframe]
101
-
102
53
  - id: tasks
103
54
  generates: tasks.yaml
104
55
  description: Tasks organized by feature with optional TDD phases
@@ -63,55 +63,6 @@ artifacts:
63
63
  For simple changes, you can skip this artifact.
64
64
  requires: [proposal]
65
65
 
66
- - id: design-wireframe
67
- generates: design-wireframe.yaml
68
- description: Page wireframes with layouts, component placements, user flows, and annotations
69
- template: design-wireframe.yaml
70
- optional: true
71
- instruction: |
72
- Create wireframe specifications for the change's UI pages.
73
-
74
- Only create this artifact if the change involves user-facing UI changes.
75
- If the change is backend-only, infrastructure, or has no visual component,
76
- skip this artifact.
77
-
78
- Include:
79
- 1. Pages - list all UI pages/screens with their layout regions
80
- 2. Layout - define regions (header, sidebar, main, footer) with ordering
81
- 3. Components - place UI components (buttons, cards, inputs, etc.) in regions with positions and sizes
82
- 4. Flows - document user navigation paths between pages
83
- 5. Annotations - add notes about constraints, edge cases, design decisions
84
-
85
- Use kebab-case for page IDs, component IDs, and flow IDs.
86
- Position coordinates use a 12-column grid system (0-11).
87
-
88
- The optional html_preview flag generates a visual wireframe preview.
89
- requires: [design-tech]
90
-
91
- - id: design-hifi
92
- generates: design-hifi.yaml
93
- description: High-fidelity design system specification with color, typography, spacing, and components
94
- template: design-hifi.yaml
95
- optional: true
96
- instruction: |
97
- Create a high-fidelity design system specification.
98
-
99
- Only create this artifact if the change requires visual design decisions.
100
- Can be created directly after wireframes, or skipped if only wireframes are needed.
101
-
102
- Include:
103
- 1. Color Palette - primary, secondary, accent, neutral, semantic, and surface colors with hex values
104
- 2. Typography - font families, type scale with sizes/weights/line-heights, hierarchy roles
105
- 3. Spacing - base unit and spacing scale
106
- 4. Component Library - button, card, input, and navigation variants with states
107
- 5. Breakpoints - responsive breakpoints with column counts and rules
108
-
109
- Use hex format (#RRGGBB) for all colors.
110
- The type scale should cover h1-h6, body, caption, and small roles.
111
-
112
- The optional html_preview flag generates a visual style guide preview.
113
- requires: [design-wireframe]
114
-
115
66
  - id: tasks
116
67
  generates: tasks.yaml
117
68
  description: Implementation task list with dependencies
@@ -80,55 +80,6 @@ artifacts:
80
80
  - Keep surface area small
81
81
  requires: [specs]
82
82
 
83
- - id: design-wireframe
84
- generates: design-wireframe.yaml
85
- description: Page wireframes with layouts, component placements, user flows, and annotations
86
- template: design-wireframe.yaml
87
- optional: true
88
- instruction: |
89
- Create wireframe specifications for the change's UI pages.
90
-
91
- Only create this artifact if the change involves user-facing UI changes.
92
- If the change is backend-only, infrastructure, or has no visual component,
93
- skip this artifact.
94
-
95
- Include:
96
- 1. Pages - list all UI pages/screens with their layout regions
97
- 2. Layout - define regions (header, sidebar, main, footer) with ordering
98
- 3. Components - place UI components (buttons, cards, inputs, etc.) in regions with positions and sizes
99
- 4. Flows - document user navigation paths between pages
100
- 5. Annotations - add notes about constraints, edge cases, design decisions
101
-
102
- Use kebab-case for page IDs, component IDs, and flow IDs.
103
- Position coordinates use a 12-column grid system (0-11).
104
-
105
- The optional html_preview flag generates a visual wireframe preview.
106
- requires: [design-tech]
107
-
108
- - id: design-hifi
109
- generates: design-hifi.yaml
110
- description: High-fidelity design system specification with color, typography, spacing, and components
111
- template: design-hifi.yaml
112
- optional: true
113
- instruction: |
114
- Create a high-fidelity design system specification.
115
-
116
- Only create this artifact if the change requires visual design decisions.
117
- Can be created directly after wireframes, or skipped if only wireframes are needed.
118
-
119
- Include:
120
- 1. Color Palette - primary, secondary, accent, neutral, semantic, and surface colors with hex values
121
- 2. Typography - font families, type scale with sizes/weights/line-heights, hierarchy roles
122
- 3. Spacing - base unit and spacing scale
123
- 4. Component Library - button, card, input, and navigation variants with states
124
- 5. Breakpoints - responsive breakpoints with column counts and rules
125
-
126
- Use hex format (#RRGGBB) for all colors.
127
- The type scale should cover h1-h6, body, caption, and small roles.
128
-
129
- The optional html_preview flag generates a visual style guide preview.
130
- requires: [design-wireframe]
131
-
132
83
  - id: tasks
133
84
  generates: tasks.yaml
134
85
  description: Vertical slice tasks in RED-GREEN-REFACTOR cycles
@@ -0,0 +1,104 @@
1
+ name: ui-driven
2
+ version: 1
3
+ description: Spec-driven workflow for frontend/UI work with required design artifacts
4
+ extends: spec-driven
5
+
6
+ artifacts:
7
+ - id: design-html
8
+ generates: design.html
9
+ description: Visual design mockup as a standalone HTML file serving as the design source of truth
10
+ instruction: |
11
+ Create a complete visual design mockup as a standalone HTML file.
12
+
13
+ Include:
14
+ 1. Layout - page structure with regions (header, hero, features, footer, etc.)
15
+ 2. Color scheme - visual color application throughout the design
16
+ 3. Typography - font choices and text hierarchy
17
+ 4. Component styling - buttons, cards, navigation, inputs
18
+ 5. Spacing and rhythm - visual breathing room between sections
19
+
20
+ The HTML should be self-contained (inline styles, no external deps).
21
+ This is the primary visual artifact that the human reviews before formalization.
22
+ Design it to be visually compelling and production-quality.
23
+
24
+ After creating this artifact, return control to the orchestrator
25
+ for human review feedback before proceeding with wireframe/hifi.
26
+ requires: [design-tech]
27
+
28
+ - id: design-wireframe
29
+ generates: design-wireframe.yaml
30
+ description: Page wireframes with structured layout, component placements, user flows, and annotations derived from the approved design HTML
31
+ template: design-wireframe.yaml
32
+ instruction: |
33
+ Create a structured wireframe specification derived from the approved design.html.
34
+
35
+ Extract from the design HTML:
36
+ 1. Pages - identify each distinct page/screen, define layout regions (header, sidebar, main, footer, hero, section)
37
+ 2. Layout - map each page's regions with display ordering
38
+ 3. Components - identify UI components (buttons, cards, inputs, navigation, etc.) with their region, grid position, and size
39
+ 4. Flows - document user navigation paths between pages with trigger actions
40
+ 5. Annotations - add notes about constraints, edge cases, design decisions
41
+
42
+ Use kebab-case for page IDs, component IDs, and flow IDs.
43
+ Position coordinates use a 12-column grid system (0-11).
44
+ requires: [design-html]
45
+
46
+ - id: design-hifi
47
+ generates: design-hifi.yaml
48
+ description: High-fidelity design system specification with color palette, typography, spacing, and component library derived from the approved design HTML
49
+ template: design-hifi.yaml
50
+ instruction: |
51
+ Create a structured high-fidelity design system specification derived from the approved design.html.
52
+
53
+ Extract from the design HTML:
54
+ 1. Color Palette - primary, secondary, accent, neutral, semantic, and surface colors with hex values
55
+ 2. Typography - font families with stacks, type scale with sizes/weights/line-heights, hierarchy roles
56
+ 3. Spacing - base unit and spacing scale
57
+ 4. Component Library - button, card, input, and navigation variants with states and properties
58
+ 5. Breakpoints - responsive breakpoints with column counts and rules
59
+
60
+ Use hex format (#RRGGBB) for all colors.
61
+ The type scale should cover h1-h6, body, caption, and small roles.
62
+ requires: [design-wireframe]
63
+
64
+ - id: tasks
65
+ generates: tasks.yaml
66
+ description: Implementation task list with dependencies
67
+ template: tasks.yaml
68
+ instruction: |
69
+ Break the implementation into concrete tasks.
70
+
71
+ Each task must:
72
+ - Have a unique ID (t1, t2, t3, ...)
73
+ - Belong to a group (Database, Auth, API, UI, etc.)
74
+ - List dependencies (other task IDs)
75
+ - Estimate complexity (low/medium/high)
76
+ - Estimate time in minutes
77
+ - Reference specs (capability/requirement)
78
+ - List affected files
79
+ - Define acceptance criteria
80
+
81
+ Order tasks by dependency (what must be done first?).
82
+ Keep tasks small enough to complete in one session.
83
+ Each task should be independently verifiable.
84
+ requires: [specs, design-tech, design-hifi]
85
+
86
+ apply:
87
+ requires: [tasks]
88
+ tracks: tasks.yaml
89
+ instruction: |
90
+ Implement tasks in dependency order.
91
+
92
+ For each task:
93
+ 1. Read the task details and acceptance criteria
94
+ 2. Read referenced specs for context
95
+ 3. Implement the changes
96
+ 4. Verify acceptance criteria are met
97
+ 5. Update task status to "done"
98
+
99
+ Pause if:
100
+ - Task is unclear (ask for clarification)
101
+ - Design issue discovered (suggest design update)
102
+ - Error or blocker (report and wait)
103
+
104
+ Keep changes minimal and scoped to the task.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: cbm-index-repo
3
+ description: Re-index the codebase with codebase-memory-mcp to update the knowledge graph after code changes. Use this when the user says "re-index", "update the cbm graph", "reindex", or "index the codebase".
4
+ ---
5
+
6
+ # Re-Index Codebase Memory
7
+
8
+ Re-builds the knowledge graph for the current project using codebase-memory-mcp.
9
+ Run this after significant code changes so the graph stays fresh.
10
+
11
+ ## When to Use
12
+
13
+ - User wants to re-index the codebase for the MCP knowledge graph
14
+ - User says "re-index", "reindex", "update the cbm graph", "index the codebase"
15
+ - After making significant code changes that the knowledge graph should reflect
16
+
17
+ ## Usage
18
+
19
+ ```bash
20
+ codebase-memory-mcp index --path .
21
+ ```
22
+
23
+ Run this from the project root directory.
24
+
25
+ ## Why
26
+
27
+ The knowledge graph enables structural queries (`search_graph`, `trace_path`, etc.)
28
+ instead of expensive `grep`/`glob`/`read` operations. Keeping it indexed saves tokens
29
+ and speeds up agent responses.
30
+
31
+ ## After Indexing
32
+
33
+ Once indexed, agents can use the following tool priority for code understanding:
34
+
35
+ 1. `search_graph` — find functions, classes, routes, variables by pattern
36
+ 2. `trace_path` — trace callers or callees of a function
37
+ 3. `get_code_snippet` — read specific function/class source code
38
+ 4. `query_graph` — run Cypher queries for complex patterns
39
+ 5. `get_architecture` — high-level project summary
@@ -0,0 +1,37 @@
1
+ <!-- codebase-memory-mcp:start -->
2
+ # Codebase Knowledge Graph (codebase-memory-mcp)
3
+
4
+ This project uses codebase-memory-mcp to maintain a knowledge graph of the codebase.
5
+ ALWAYS prefer MCP graph tools over grep/glob/file-search for code discovery.
6
+
7
+ ## Priority Order
8
+ 1. `codebase-memory-mcp_search_graph` — find functions, classes, routes, variables by pattern
9
+ 2. `codebase-memory-mcp_trace_path` — trace who calls a function or what it calls
10
+ 3. `codebase-memory-mcp_get_code_snippet` — read specific function/class source code
11
+ 4. `codebase-memory-mcp_query_graph` — run Cypher queries for complex patterns
12
+ 5. `codebase-memory-mcp_get_architecture` — high-level project summary
13
+
14
+ ## When to fall back to grep/glob
15
+ - Searching for string literals, error messages, config values
16
+ - Searching non-code files (Dockerfiles, shell scripts, configs)
17
+ - When MCP tools return insufficient results
18
+
19
+ ## Examples
20
+ - Find a handler: `codebase-memory-mcp_search_graph(name_pattern=".*Handler.*")`
21
+ - Who calls it: `codebase-memory-mcp_trace_path(function_name="Handler", direction="inbound")`
22
+ - Read source: `codebase-memory-mcp_get_code_snippet(qualified_name="src/plugin/index")`
23
+
24
+ ## CLI Usage (Bash fallback)
25
+ When native MCP tools are unavailable, use the CLI directly:
26
+ ```bash
27
+ codebase-memory-mcp cli search_graph '{"name_pattern": ".*Handler.*"}'
28
+ codebase-memory-mcp cli trace_path '{"function_name": "Handler", "direction": "inbound"}'
29
+ codebase-memory-mcp cli get_code_snippet '{"qualified_name": "src/plugin/index"}'
30
+ ```
31
+
32
+ ## Re-indexing
33
+ After code changes, re-index to keep the graph up to date:
34
+ ```bash
35
+ codebase-memory-mcp index --path .
36
+ ```
37
+ <!-- codebase-memory-mcp:end -->