@cardor/agent-harness-kit 2.4.0 → 2.5.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 +21 -1
- package/dist/cli.js +3 -3
- package/dist/cli.js.map +1 -1
- package/dist/skills/ahk-test/SKILL.md +61 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -361,10 +361,30 @@ Reports three categories:
|
|
|
361
361
|
|
|
362
362
|
- **lib version** — compares installed version against the latest on npm. Shows `[✓]` if up to date, `[!]` if an update is available, or `[~]` if the registry could not be reached.
|
|
363
363
|
- **agent files** — checks only that a definition file exists for every role. Reports `[!]` with the file name if one is missing. The contents are never read, so **editing an agent file by hand is a fully supported state and is never reported** — customise the body, the description, or the restrictions freely and `ahk doctor` stays green.
|
|
364
|
-
- **harness skills** — checks that `ahk-ask`, `ahk-consultant`, `ahk-triage`, and `ahk-
|
|
364
|
+
- **harness skills** — checks that `ahk-ask`, `ahk-consultant`, `ahk-triage`, `ahk-review`, and `ahk-test` skills exist and match the bundled source. Reports `[!]` if missing or outdated.
|
|
365
365
|
|
|
366
366
|
Run `ahk build` to fix any reported issues.
|
|
367
367
|
|
|
368
|
+
### Bundled skills
|
|
369
|
+
|
|
370
|
+
The kit ships five lightweight skills that are materialized into every provider's skills directory on `init` and restored by `build`. Each skill is read-only instruction text — no MCP tools, no CLI commands, no database changes. They guide AI agents through focused workflows using only subagent invocations.
|
|
371
|
+
|
|
372
|
+
| Skill | Purpose | Limits |
|
|
373
|
+
|-------|---------|--------|
|
|
374
|
+
| `ahk-ask` | Answer codebase questions by reading relevant files and summarizing findings | Read-only; no writes, no MCP calls, no builder/reviewer |
|
|
375
|
+
| `ahk-consultant` | Give technical advice on approaches, designs, or trade-offs before implementation | Advisory only; never writes code or creates tasks |
|
|
376
|
+
| `ahk-triage` | Diagnose bugs and unexpected behavior with deep diagnostic analysis | Diagnostic only; does not fix the bug itself |
|
|
377
|
+
| `ahk-review` | Preview a code review against ticket/objective alignment with semantic analysis | Review only; does not modify code |
|
|
378
|
+
| `ahk-test` | Design, write, and run behavior-focused tests for an objective or existing code | Test files only; production is READ-ONLY unless explicitly authorized; NO harness MCP calls |
|
|
379
|
+
|
|
380
|
+
Invocation example for `ahk-test`:
|
|
381
|
+
|
|
382
|
+
```text
|
|
383
|
+
Use the ahk-test skill to create tests for toLibraryListBody. all must send movie and series; never anime.
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
All skills follow the same contract: they invoke Explorer, Builder, or Reviewer as subagents with bounded instructions, never call harness MCP tools directly, and never create or modify harness tasks.
|
|
387
|
+
|
|
368
388
|
---
|
|
369
389
|
|
|
370
390
|
### `ahk sync`
|
package/dist/cli.js
CHANGED
|
@@ -1057,7 +1057,7 @@ function slugify(title) {
|
|
|
1057
1057
|
return title.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 64);
|
|
1058
1058
|
}
|
|
1059
1059
|
function writeSkills(cwd2, skillsDir) {
|
|
1060
|
-
const skillNames = ["ahk-ask", "ahk-consultant", "ahk-triage", "ahk-review"];
|
|
1060
|
+
const skillNames = ["ahk-ask", "ahk-consultant", "ahk-triage", "ahk-review", "ahk-test"];
|
|
1061
1061
|
for (const skillName of skillNames) {
|
|
1062
1062
|
const src = join6(__dirname2, "skills", skillName, "SKILL.md");
|
|
1063
1063
|
const destDir = join6(cwd2, skillsDir, skillName);
|
|
@@ -1833,7 +1833,7 @@ var REGISTRY_URL = `https://registry.npmjs.org/${pkg.name}/latest`;
|
|
|
1833
1833
|
var TIMEOUT_MS = 2e3;
|
|
1834
1834
|
var LIB_VERSION_CACHE_TTL_MS = 5 * 60 * 1e3;
|
|
1835
1835
|
var AGENT_NAMES = ["lead", "explorer", "consultant", "builder", "reviewer"];
|
|
1836
|
-
var SKILL_NAMES = ["ahk-ask", "ahk-consultant", "ahk-triage", "ahk-review"];
|
|
1836
|
+
var SKILL_NAMES = ["ahk-ask", "ahk-consultant", "ahk-triage", "ahk-review", "ahk-test"];
|
|
1837
1837
|
var __dirname4 = dirname6(fileURLToPath5(import.meta.url));
|
|
1838
1838
|
var libVersionCache = null;
|
|
1839
1839
|
async function checkLibVersion() {
|
|
@@ -1907,7 +1907,7 @@ function getProviderSkillsDir(provider) {
|
|
|
1907
1907
|
}
|
|
1908
1908
|
}
|
|
1909
1909
|
function checkSkillsAtRoot(skillsRoot) {
|
|
1910
|
-
const skillSourceBase = join13(__dirname4, "skills");
|
|
1910
|
+
const skillSourceBase = join13(__dirname4, "materializer", "skills");
|
|
1911
1911
|
return SKILL_NAMES.map((name) => {
|
|
1912
1912
|
const livePath = join13(skillsRoot, name, "SKILL.md");
|
|
1913
1913
|
const sourcePath = join13(skillSourceBase, name, "SKILL.md");
|