@haus-tech/haus-workflow 5.11.0 → 5.12.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/CHANGELOG.md +6 -0
- package/dist/cli.js +17 -5
- package/library/catalog/manifest.json +80 -12
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [5.12.0](https://github.com/WeAreHausTech/haus-workflow/compare/v5.11.0...v5.12.0) (2026-10-08)
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
- **doctor:** AGENT REFS skips bold terms and agent words outside the sentence (ADR-0149) ([#633](https://github.com/WeAreHausTech/haus-workflow/issues/633)) ([c67b09c](https://github.com/WeAreHausTech/haus-workflow/commit/c67b09c40341f17ccafa89ecb2515129de407827)), closes [#307](https://github.com/WeAreHausTech/haus-workflow/issues/307) [#328](https://github.com/WeAreHausTech/haus-workflow/issues/328) [#329](https://github.com/WeAreHausTech/haus-workflow/issues/329) [WeAreHausTech/haus-workflow-catalog#307](https://github.com/WeAreHausTech/haus-workflow-catalog/issues/307)
|
|
8
|
+
|
|
3
9
|
## [5.11.0](https://github.com/WeAreHausTech/haus-workflow/compare/v5.10.1...v5.11.0) (2026-10-07)
|
|
4
10
|
|
|
5
11
|
### Features
|
package/dist/cli.js
CHANGED
|
@@ -8910,11 +8910,13 @@ var BOLD_SPAN = /\*\*([^*\n]+)\*\*/g;
|
|
|
8910
8910
|
var BARE_NAME = /^[a-z0-9][a-z0-9-]{2,}$/;
|
|
8911
8911
|
var KEBAB_NAME = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)+$/;
|
|
8912
8912
|
var AGENT_WORD = /\bagents?\b/i;
|
|
8913
|
+
var SENTENCE_END = /[.!?](?=\s|$)/g;
|
|
8913
8914
|
var ITEMS_HEADING = /\b(?:skills?|agents?)\b/i;
|
|
8914
8915
|
var LIST_ITEM = /^(\s*(?:[-*+]|\d+[.)])\s+)(.*)$/;
|
|
8915
8916
|
var LIST_LABEL = /^[A-Za-z][A-Za-z /]{0,24}:\s*/;
|
|
8916
8917
|
var KEYWORD_BEFORE = /(?:sub)?(?:skills?|agents?)\s*[:=-]*\s*$/i;
|
|
8917
8918
|
var KEYWORD_AFTER = /^\s+(?:[A-Za-z]+\s+)?(?:sub)?(?:skills?|agents?)\b/i;
|
|
8919
|
+
var ARTICLE_BEFORE = /\b(?:a|an)\s+$/i;
|
|
8918
8920
|
var ROUTER_BEFORE = /\b(?:routes?|routing|delegates?|dispatch(?:es)?|hands? off)\s*(?:to|→|->|:)?\s*$/i;
|
|
8919
8921
|
var RUN_SEPARATOR = /^\s*(?:\([^)\n]*\))?\s*(?:,|;|\/|\band\b|\bor\b|\bplus\b)\s*(?:the\s+)?$/i;
|
|
8920
8922
|
var INLINE_KEYWORD_NAME = /^(?:sub)?(?:skills?|agents?)\s*[:=]\s*(\S+)$/i;
|
|
@@ -8948,7 +8950,15 @@ function groupRuns(line2, spans) {
|
|
|
8948
8950
|
}
|
|
8949
8951
|
return runs;
|
|
8950
8952
|
}
|
|
8951
|
-
function
|
|
8953
|
+
function sentenceAround(line2, token) {
|
|
8954
|
+
let start = 0;
|
|
8955
|
+
for (const end of line2.matchAll(SENTENCE_END)) {
|
|
8956
|
+
if (end.index >= token.end) return [start, end.index + 1];
|
|
8957
|
+
start = end.index + 1;
|
|
8958
|
+
}
|
|
8959
|
+
return [start, line2.length];
|
|
8960
|
+
}
|
|
8961
|
+
function isAgentContext(line2, token, nearestHeading) {
|
|
8952
8962
|
let blanked = "";
|
|
8953
8963
|
let cursor = 0;
|
|
8954
8964
|
for (const span of boldNameSpans(line2)) {
|
|
@@ -8956,7 +8966,8 @@ function isAgentContext(line2, nearestHeading) {
|
|
|
8956
8966
|
cursor = span.end;
|
|
8957
8967
|
}
|
|
8958
8968
|
blanked += line2.slice(cursor);
|
|
8959
|
-
|
|
8969
|
+
const [start, end] = sentenceAround(line2, token);
|
|
8970
|
+
return AGENT_WORD.test(blanked.slice(start, end)) || AGENT_WORD.test(nearestHeading);
|
|
8960
8971
|
}
|
|
8961
8972
|
function extractNameReferences(lines, { knownNames = /* @__PURE__ */ new Set() } = {}) {
|
|
8962
8973
|
const out = [];
|
|
@@ -8970,16 +8981,17 @@ function extractNameReferences(lines, { knownNames = /* @__PURE__ */ new Set() }
|
|
|
8970
8981
|
const itemBody = listMatch?.[2]?.replace(LIST_LABEL, "");
|
|
8971
8982
|
const itemBodyStart = itemBody === void 0 ? -1 : line2.length - itemBody.length;
|
|
8972
8983
|
const underItemsHeading = ITEMS_HEADING.test(nearestHeading);
|
|
8973
|
-
const looseContext = isAgentContext(line2, nearestHeading);
|
|
8984
|
+
const looseContext = (span) => KEBAB_NAME.test(span.text) && isAgentContext(line2, span, nearestHeading);
|
|
8974
8985
|
for (const run of groupRuns(line2, boldNameSpans(line2))) {
|
|
8975
8986
|
const before = line2.slice(0, run[0].start);
|
|
8976
8987
|
const after = line2.slice(run.at(-1).end);
|
|
8977
|
-
const
|
|
8988
|
+
const classifier = ARTICLE_BEFORE.test(before);
|
|
8989
|
+
const positional = KEYWORD_BEFORE.test(before) || ROUTER_BEFORE.test(before) || !classifier && KEYWORD_AFTER.test(after) || // Two co-listed installed items make the run an item list. One is not enough:
|
|
8978
8990
|
// package names share basenames with skills.
|
|
8979
8991
|
run.filter((span) => knownNames.has(span.text)).length >= 2 || underItemsHeading && run[0].start === itemBodyStart;
|
|
8980
8992
|
for (const span of run) {
|
|
8981
8993
|
if (inCodeSpan(span.start)) continue;
|
|
8982
|
-
if (!positional &&
|
|
8994
|
+
if (!positional && (classifier || !looseContext(span))) continue;
|
|
8983
8995
|
out.push({ line: lineNumber, name: span.text, kind: "bold" });
|
|
8984
8996
|
}
|
|
8985
8997
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "6.
|
|
2
|
+
"version": "6.10.0",
|
|
3
3
|
"manifestFormat": 2,
|
|
4
4
|
"globalPlugins": [
|
|
5
5
|
{
|
|
@@ -40,7 +40,9 @@
|
|
|
40
40
|
"haus.mattpocock-domain-modeling",
|
|
41
41
|
"haus.mattpocock-grill-with-docs",
|
|
42
42
|
"haus.mattpocock-research",
|
|
43
|
-
"haus.mattpocock-handoff"
|
|
43
|
+
"haus.mattpocock-handoff",
|
|
44
|
+
"haus.mattpocock-retro",
|
|
45
|
+
"haus.mattpocock-writing-for-agents"
|
|
44
46
|
]
|
|
45
47
|
},
|
|
46
48
|
"keepIds": ["haus.currents-dev-playwright-best-practices"]
|
|
@@ -49,7 +51,7 @@
|
|
|
49
51
|
"items": [
|
|
50
52
|
{
|
|
51
53
|
"id": "haus.agentic-workflow-standard",
|
|
52
|
-
"version": "2.1
|
|
54
|
+
"version": "2.2.1",
|
|
53
55
|
"source": "haus",
|
|
54
56
|
"type": "template",
|
|
55
57
|
"path": "templates/agentic-workflow-standard.md",
|
|
@@ -60,7 +62,7 @@
|
|
|
60
62
|
"tags": ["workflow", "baseline", "project-instructions"],
|
|
61
63
|
"repoRoles": [],
|
|
62
64
|
"installMode": "copy-selected",
|
|
63
|
-
"tokenEstimate":
|
|
65
|
+
"tokenEstimate": 3434,
|
|
64
66
|
"tokenBudget": 5131,
|
|
65
67
|
"default": true,
|
|
66
68
|
"reviewStatus": "approved",
|
|
@@ -1656,7 +1658,7 @@
|
|
|
1656
1658
|
},
|
|
1657
1659
|
{
|
|
1658
1660
|
"id": "haus.adr-decisions",
|
|
1659
|
-
"version": "1.
|
|
1661
|
+
"version": "1.2.0",
|
|
1660
1662
|
"source": "haus",
|
|
1661
1663
|
"type": "skill",
|
|
1662
1664
|
"path": "skills/haus-owned/general/adr-decisions",
|
|
@@ -1668,7 +1670,7 @@
|
|
|
1668
1670
|
"repoRoles": [],
|
|
1669
1671
|
"ecosystem": "general",
|
|
1670
1672
|
"installMode": "copy-selected",
|
|
1671
|
-
"tokenEstimate":
|
|
1673
|
+
"tokenEstimate": 924,
|
|
1672
1674
|
"tokenBudget": 1122,
|
|
1673
1675
|
"default": true,
|
|
1674
1676
|
"reviewStatus": "approved",
|
|
@@ -1676,7 +1678,7 @@
|
|
|
1676
1678
|
},
|
|
1677
1679
|
{
|
|
1678
1680
|
"id": "haus.issue-authoring",
|
|
1679
|
-
"version": "1.
|
|
1681
|
+
"version": "1.4.1",
|
|
1680
1682
|
"source": "haus",
|
|
1681
1683
|
"type": "skill",
|
|
1682
1684
|
"path": "skills/haus-owned/general/issue-authoring",
|
|
@@ -1688,7 +1690,7 @@
|
|
|
1688
1690
|
"repoRoles": [],
|
|
1689
1691
|
"ecosystem": "general",
|
|
1690
1692
|
"installMode": "copy-selected",
|
|
1691
|
-
"tokenEstimate":
|
|
1693
|
+
"tokenEstimate": 2590,
|
|
1692
1694
|
"tokenBudget": 2970,
|
|
1693
1695
|
"default": true,
|
|
1694
1696
|
"reviewStatus": "approved",
|
|
@@ -1725,7 +1727,7 @@
|
|
|
1725
1727
|
},
|
|
1726
1728
|
{
|
|
1727
1729
|
"id": "haus.issue-creator",
|
|
1728
|
-
"version": "1.
|
|
1730
|
+
"version": "1.3.0",
|
|
1729
1731
|
"source": "haus",
|
|
1730
1732
|
"type": "agent",
|
|
1731
1733
|
"path": "agents/haus-owned/issue-creator.md",
|
|
@@ -1737,7 +1739,7 @@
|
|
|
1737
1739
|
"repoRoles": [],
|
|
1738
1740
|
"ecosystem": "general",
|
|
1739
1741
|
"installMode": "copy-selected",
|
|
1740
|
-
"tokenEstimate":
|
|
1742
|
+
"tokenEstimate": 797,
|
|
1741
1743
|
"tokenBudget": 974,
|
|
1742
1744
|
"default": true,
|
|
1743
1745
|
"reviewStatus": "approved",
|
|
@@ -5564,14 +5566,14 @@
|
|
|
5564
5566
|
},
|
|
5565
5567
|
{
|
|
5566
5568
|
"id": "haus.mattpocock-grill-with-docs",
|
|
5567
|
-
"version": "1.0.
|
|
5569
|
+
"version": "1.0.1",
|
|
5568
5570
|
"source": "curated",
|
|
5569
5571
|
"type": "skill",
|
|
5570
5572
|
"path": "sources/mattpocock/skills/engineering/grill-with-docs",
|
|
5571
5573
|
"title": "Mattpocock Grill With Docs",
|
|
5572
5574
|
"purpose": "A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.",
|
|
5573
5575
|
"whenToUse": "A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.",
|
|
5574
|
-
"whenNotToUse": "Not for a customer request that is to be specced: the request flow never asks questions back. Run it on a branch
|
|
5576
|
+
"whenNotToUse": "Not for a customer request that is to be specced: the request flow never asks questions back. Run it on a branch (a worktree only from a clean, committed state), because it writes files. One session: split larger work first.",
|
|
5575
5577
|
"tags": ["workflow"],
|
|
5576
5578
|
"repoRoles": [],
|
|
5577
5579
|
"tokenEstimate": 62,
|
|
@@ -5660,6 +5662,72 @@
|
|
|
5660
5662
|
"role": "handoff-workflow"
|
|
5661
5663
|
}
|
|
5662
5664
|
]
|
|
5665
|
+
},
|
|
5666
|
+
{
|
|
5667
|
+
"id": "haus.mattpocock-retro",
|
|
5668
|
+
"version": "1.0.0",
|
|
5669
|
+
"source": "curated",
|
|
5670
|
+
"type": "skill",
|
|
5671
|
+
"path": "sources/mattpocock/skills/engineering/retro",
|
|
5672
|
+
"title": "Mattpocock Retro",
|
|
5673
|
+
"purpose": "Conduct a retrospective on a coding session.",
|
|
5674
|
+
"whenToUse": "Conduct a retrospective on a coding session.",
|
|
5675
|
+
"whenNotToUse": "Not for a verdict on the code a session produced. A candidate about haus-shipped content is filed upstream, never hand-edited. Only the candidates you pick are filed.",
|
|
5676
|
+
"tags": ["workflow"],
|
|
5677
|
+
"repoRoles": [],
|
|
5678
|
+
"tokenEstimate": 1093,
|
|
5679
|
+
"tokenBudget": 1421,
|
|
5680
|
+
"installMode": "copy-selected",
|
|
5681
|
+
"default": false,
|
|
5682
|
+
"reviewStatus": "approved",
|
|
5683
|
+
"riskLevel": "low",
|
|
5684
|
+
"useMode": "copy",
|
|
5685
|
+
"license": "MIT",
|
|
5686
|
+
"licenseConfidence": "high",
|
|
5687
|
+
"originSourceId": "mattpocock-skills",
|
|
5688
|
+
"originUrl": "https://github.com/mattpocock/skills/blob/4588b32ecab9ecc9fc8cc6b6c5e7d675b6004b0d/skills/engineering/retro/SKILL.md",
|
|
5689
|
+
"pinnedRef": "4588b32ecab9ecc9fc8cc6b6c5e7d675b6004b0d",
|
|
5690
|
+
"ecosystem": "general",
|
|
5691
|
+
"optInTier": "workflow",
|
|
5692
|
+
"optInGroup": "Session retrospective",
|
|
5693
|
+
"requiresAny": [
|
|
5694
|
+
{
|
|
5695
|
+
"role": "retro-workflow"
|
|
5696
|
+
}
|
|
5697
|
+
]
|
|
5698
|
+
},
|
|
5699
|
+
{
|
|
5700
|
+
"id": "haus.mattpocock-writing-for-agents",
|
|
5701
|
+
"version": "1.0.0",
|
|
5702
|
+
"source": "curated",
|
|
5703
|
+
"type": "skill",
|
|
5704
|
+
"path": "sources/mattpocock/skills/productivity/writing-for-agents",
|
|
5705
|
+
"title": "Mattpocock Writing For Agents",
|
|
5706
|
+
"purpose": "Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.",
|
|
5707
|
+
"whenToUse": "Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.",
|
|
5708
|
+
"whenNotToUse": "Not for generating or refreshing project docs or the CLAUDE.md body: the writing-documentation skill owns that. Not for testing a skill before shipping: the superpowers writing-skills skill does that. Never on haus-managed files and blocks, which change only through the catalog and haus apply.",
|
|
5709
|
+
"tags": ["workflow"],
|
|
5710
|
+
"repoRoles": [],
|
|
5711
|
+
"tokenEstimate": 2722,
|
|
5712
|
+
"tokenBudget": 3539,
|
|
5713
|
+
"installMode": "copy-selected",
|
|
5714
|
+
"default": false,
|
|
5715
|
+
"reviewStatus": "approved",
|
|
5716
|
+
"riskLevel": "low",
|
|
5717
|
+
"useMode": "copy",
|
|
5718
|
+
"license": "MIT",
|
|
5719
|
+
"licenseConfidence": "high",
|
|
5720
|
+
"originSourceId": "mattpocock-skills",
|
|
5721
|
+
"originUrl": "https://github.com/mattpocock/skills/blob/4588b32ecab9ecc9fc8cc6b6c5e7d675b6004b0d/skills/productivity/writing-for-agents/SKILL.md",
|
|
5722
|
+
"pinnedRef": "4588b32ecab9ecc9fc8cc6b6c5e7d675b6004b0d",
|
|
5723
|
+
"ecosystem": "general",
|
|
5724
|
+
"optInTier": "workflow",
|
|
5725
|
+
"optInGroup": "Session retrospective",
|
|
5726
|
+
"requiresAny": [
|
|
5727
|
+
{
|
|
5728
|
+
"role": "retro-workflow"
|
|
5729
|
+
}
|
|
5730
|
+
]
|
|
5663
5731
|
}
|
|
5664
5732
|
]
|
|
5665
5733
|
}
|