@haus-tech/haus-workflow 5.12.1 → 6.1.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 +66 -0
- package/README.md +7 -4
- package/dist/cli.js +7944 -4000
- package/library/catalog/manifest.json +126 -9
- package/library/global/agents/request-design-reviewer.md +54 -0
- package/library/global/agents/request-designer.md +113 -0
- package/library/global/skills/haus-workflow/SKILL.md +10 -3
- package/library/global/skills/haus-workflow/references/init.md +7 -4
- package/library/global/skills/haus-workflow/references/new.md +1 -1
- package/library/global/skills/request/SKILL.md +493 -107
- package/library/global/skills/request/scripts/archive.mjs +736 -56
- package/library/global/skills/request/scripts/bedom.mjs +651 -0
- package/library/global/skills/request/scripts/korning.mjs +911 -70
- package/library/global/skills/request/scripts/lib.mjs +328 -3
- package/library/global/skills/request/scripts/precheck.mjs +134 -34
- package/library/global/skills/request/scripts/svep.mjs +44 -14
- package/library/global/skills/request-assess-impact/SKILL.md +1 -4
- package/library/global/skills/request-sync/SKILL.md +8 -2
- package/package.json +4 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "6.
|
|
2
|
+
"version": "6.12.0",
|
|
3
3
|
"manifestFormat": 2,
|
|
4
4
|
"globalPlugins": [
|
|
5
5
|
{
|
|
@@ -42,7 +42,10 @@
|
|
|
42
42
|
"haus.mattpocock-research",
|
|
43
43
|
"haus.mattpocock-handoff",
|
|
44
44
|
"haus.mattpocock-retro",
|
|
45
|
-
"haus.mattpocock-writing-for-agents"
|
|
45
|
+
"haus.mattpocock-writing-for-agents",
|
|
46
|
+
"haus.mattpocock-improve-codebase-architecture",
|
|
47
|
+
"haus.mattpocock-codebase-design",
|
|
48
|
+
"haus.mattpocock-wayfinder"
|
|
46
49
|
]
|
|
47
50
|
},
|
|
48
51
|
"keepIds": ["haus.currents-dev-playwright-best-practices"]
|
|
@@ -51,7 +54,7 @@
|
|
|
51
54
|
"items": [
|
|
52
55
|
{
|
|
53
56
|
"id": "haus.agentic-workflow-standard",
|
|
54
|
-
"version": "2.
|
|
57
|
+
"version": "2.4.1",
|
|
55
58
|
"source": "haus",
|
|
56
59
|
"type": "template",
|
|
57
60
|
"path": "templates/agentic-workflow-standard.md",
|
|
@@ -62,7 +65,7 @@
|
|
|
62
65
|
"tags": ["workflow", "baseline", "project-instructions"],
|
|
63
66
|
"repoRoles": [],
|
|
64
67
|
"installMode": "copy-selected",
|
|
65
|
-
"tokenEstimate":
|
|
68
|
+
"tokenEstimate": 3508,
|
|
66
69
|
"tokenBudget": 5131,
|
|
67
70
|
"default": true,
|
|
68
71
|
"reviewStatus": "approved",
|
|
@@ -1678,7 +1681,7 @@
|
|
|
1678
1681
|
},
|
|
1679
1682
|
{
|
|
1680
1683
|
"id": "haus.issue-authoring",
|
|
1681
|
-
"version": "1.
|
|
1684
|
+
"version": "1.5.1",
|
|
1682
1685
|
"source": "haus",
|
|
1683
1686
|
"type": "skill",
|
|
1684
1687
|
"path": "skills/haus-owned/general/issue-authoring",
|
|
@@ -1690,7 +1693,7 @@
|
|
|
1690
1693
|
"repoRoles": [],
|
|
1691
1694
|
"ecosystem": "general",
|
|
1692
1695
|
"installMode": "copy-selected",
|
|
1693
|
-
"tokenEstimate":
|
|
1696
|
+
"tokenEstimate": 2658,
|
|
1694
1697
|
"tokenBudget": 2970,
|
|
1695
1698
|
"default": true,
|
|
1696
1699
|
"reviewStatus": "approved",
|
|
@@ -5500,7 +5503,7 @@
|
|
|
5500
5503
|
},
|
|
5501
5504
|
{
|
|
5502
5505
|
"id": "haus.mattpocock-grilling",
|
|
5503
|
-
"version": "1.
|
|
5506
|
+
"version": "1.2.0",
|
|
5504
5507
|
"source": "curated",
|
|
5505
5508
|
"type": "skill",
|
|
5506
5509
|
"path": "sources/mattpocock/skills/productivity/grilling",
|
|
@@ -5528,12 +5531,18 @@
|
|
|
5528
5531
|
"requiresAny": [
|
|
5529
5532
|
{
|
|
5530
5533
|
"role": "interview-workflow"
|
|
5534
|
+
},
|
|
5535
|
+
{
|
|
5536
|
+
"role": "architecture-review"
|
|
5537
|
+
},
|
|
5538
|
+
{
|
|
5539
|
+
"role": "wayfinding"
|
|
5531
5540
|
}
|
|
5532
5541
|
]
|
|
5533
5542
|
},
|
|
5534
5543
|
{
|
|
5535
5544
|
"id": "haus.mattpocock-domain-modeling",
|
|
5536
|
-
"version": "1.
|
|
5545
|
+
"version": "1.2.0",
|
|
5537
5546
|
"source": "curated",
|
|
5538
5547
|
"type": "skill",
|
|
5539
5548
|
"path": "sources/mattpocock/skills/engineering/domain-modeling",
|
|
@@ -5561,6 +5570,12 @@
|
|
|
5561
5570
|
"requiresAny": [
|
|
5562
5571
|
{
|
|
5563
5572
|
"role": "interview-workflow"
|
|
5573
|
+
},
|
|
5574
|
+
{
|
|
5575
|
+
"role": "architecture-review"
|
|
5576
|
+
},
|
|
5577
|
+
{
|
|
5578
|
+
"role": "wayfinding"
|
|
5564
5579
|
}
|
|
5565
5580
|
]
|
|
5566
5581
|
},
|
|
@@ -5599,7 +5614,7 @@
|
|
|
5599
5614
|
},
|
|
5600
5615
|
{
|
|
5601
5616
|
"id": "haus.mattpocock-research",
|
|
5602
|
-
"version": "1.
|
|
5617
|
+
"version": "1.1.0",
|
|
5603
5618
|
"source": "curated",
|
|
5604
5619
|
"type": "skill",
|
|
5605
5620
|
"path": "sources/mattpocock/skills/engineering/research",
|
|
@@ -5627,6 +5642,9 @@
|
|
|
5627
5642
|
"requiresAny": [
|
|
5628
5643
|
{
|
|
5629
5644
|
"role": "interview-workflow"
|
|
5645
|
+
},
|
|
5646
|
+
{
|
|
5647
|
+
"role": "wayfinding"
|
|
5630
5648
|
}
|
|
5631
5649
|
]
|
|
5632
5650
|
},
|
|
@@ -5728,6 +5746,105 @@
|
|
|
5728
5746
|
"role": "retro-workflow"
|
|
5729
5747
|
}
|
|
5730
5748
|
]
|
|
5749
|
+
},
|
|
5750
|
+
{
|
|
5751
|
+
"id": "haus.mattpocock-improve-codebase-architecture",
|
|
5752
|
+
"version": "1.0.0",
|
|
5753
|
+
"source": "curated",
|
|
5754
|
+
"type": "skill",
|
|
5755
|
+
"path": "sources/mattpocock/skills/engineering/improve-codebase-architecture",
|
|
5756
|
+
"title": "Mattpocock Improve Codebase Architecture",
|
|
5757
|
+
"purpose": "Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.",
|
|
5758
|
+
"whenToUse": "Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.",
|
|
5759
|
+
"whenNotToUse": "Not for work in flight: it surveys and changes no code. Run it on a branch, one candidate per session, and ask for inline CSS and SVG instead of the CDN scaffold. Decisions go to docs/decisions/ through adr-decisions. A candidate to do now goes to brainstorming and writing-plans. A candidate for later becomes an issue only when you ask.",
|
|
5760
|
+
"tags": ["workflow"],
|
|
5761
|
+
"repoRoles": [],
|
|
5762
|
+
"tokenEstimate": 1500,
|
|
5763
|
+
"tokenBudget": 1950,
|
|
5764
|
+
"installMode": "copy-selected",
|
|
5765
|
+
"default": false,
|
|
5766
|
+
"reviewStatus": "approved",
|
|
5767
|
+
"riskLevel": "low",
|
|
5768
|
+
"useMode": "copy",
|
|
5769
|
+
"license": "MIT",
|
|
5770
|
+
"licenseConfidence": "high",
|
|
5771
|
+
"originSourceId": "mattpocock-skills",
|
|
5772
|
+
"originUrl": "https://github.com/mattpocock/skills/blob/4588b32ecab9ecc9fc8cc6b6c5e7d675b6004b0d/skills/engineering/improve-codebase-architecture/SKILL.md",
|
|
5773
|
+
"pinnedRef": "4588b32ecab9ecc9fc8cc6b6c5e7d675b6004b0d",
|
|
5774
|
+
"ecosystem": "general",
|
|
5775
|
+
"optInTier": "workflow",
|
|
5776
|
+
"optInGroup": "Architecture review",
|
|
5777
|
+
"requiresAny": [
|
|
5778
|
+
{
|
|
5779
|
+
"role": "architecture-review"
|
|
5780
|
+
}
|
|
5781
|
+
]
|
|
5782
|
+
},
|
|
5783
|
+
{
|
|
5784
|
+
"id": "haus.mattpocock-codebase-design",
|
|
5785
|
+
"version": "1.0.0",
|
|
5786
|
+
"source": "curated",
|
|
5787
|
+
"type": "skill",
|
|
5788
|
+
"path": "sources/mattpocock/skills/engineering/codebase-design",
|
|
5789
|
+
"title": "Mattpocock Codebase Design",
|
|
5790
|
+
"purpose": "Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.",
|
|
5791
|
+
"whenToUse": "Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.",
|
|
5792
|
+
"whenNotToUse": "Vocabulary only, not a process: design still starts in brainstorming and a restructuring still needs an approved plan. Its terms name design roles, so framework things keep their names. The workflow standard, rule files and stack skills win on testing bars, size limits and required layers.",
|
|
5793
|
+
"tags": ["workflow"],
|
|
5794
|
+
"repoRoles": [],
|
|
5795
|
+
"tokenEstimate": 1612,
|
|
5796
|
+
"tokenBudget": 2096,
|
|
5797
|
+
"installMode": "copy-selected",
|
|
5798
|
+
"default": false,
|
|
5799
|
+
"reviewStatus": "approved",
|
|
5800
|
+
"riskLevel": "low",
|
|
5801
|
+
"useMode": "copy",
|
|
5802
|
+
"license": "MIT",
|
|
5803
|
+
"licenseConfidence": "high",
|
|
5804
|
+
"originSourceId": "mattpocock-skills",
|
|
5805
|
+
"originUrl": "https://github.com/mattpocock/skills/blob/4588b32ecab9ecc9fc8cc6b6c5e7d675b6004b0d/skills/engineering/codebase-design/SKILL.md",
|
|
5806
|
+
"pinnedRef": "4588b32ecab9ecc9fc8cc6b6c5e7d675b6004b0d",
|
|
5807
|
+
"ecosystem": "general",
|
|
5808
|
+
"optInTier": "workflow",
|
|
5809
|
+
"optInGroup": "Architecture review",
|
|
5810
|
+
"requiresAny": [
|
|
5811
|
+
{
|
|
5812
|
+
"role": "architecture-review"
|
|
5813
|
+
}
|
|
5814
|
+
]
|
|
5815
|
+
},
|
|
5816
|
+
{
|
|
5817
|
+
"id": "haus.mattpocock-wayfinder",
|
|
5818
|
+
"version": "1.0.0",
|
|
5819
|
+
"source": "curated",
|
|
5820
|
+
"type": "skill",
|
|
5821
|
+
"path": "sources/mattpocock/skills/engineering/wayfinder",
|
|
5822
|
+
"title": "Mattpocock Wayfinder",
|
|
5823
|
+
"purpose": "Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.",
|
|
5824
|
+
"whenToUse": "Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.",
|
|
5825
|
+
"whenNotToUse": "Only for an effort that does not fit one session and whose route is unclear: anything smaller goes through brainstorming. It decides and never builds. It needs GitHub Issues with the four wayfinder labels, and its operations are in the issue-authoring skill's issue tracker reference.",
|
|
5826
|
+
"tags": ["workflow"],
|
|
5827
|
+
"repoRoles": [],
|
|
5828
|
+
"tokenEstimate": 2977,
|
|
5829
|
+
"tokenBudget": 3871,
|
|
5830
|
+
"installMode": "copy-selected",
|
|
5831
|
+
"default": false,
|
|
5832
|
+
"reviewStatus": "approved",
|
|
5833
|
+
"riskLevel": "low",
|
|
5834
|
+
"useMode": "copy",
|
|
5835
|
+
"license": "MIT",
|
|
5836
|
+
"licenseConfidence": "high",
|
|
5837
|
+
"originSourceId": "mattpocock-skills",
|
|
5838
|
+
"originUrl": "https://github.com/mattpocock/skills/blob/4588b32ecab9ecc9fc8cc6b6c5e7d675b6004b0d/skills/engineering/wayfinder/SKILL.md",
|
|
5839
|
+
"pinnedRef": "4588b32ecab9ecc9fc8cc6b6c5e7d675b6004b0d",
|
|
5840
|
+
"ecosystem": "general",
|
|
5841
|
+
"optInTier": "workflow",
|
|
5842
|
+
"optInGroup": "Wayfinding",
|
|
5843
|
+
"requiresAny": [
|
|
5844
|
+
{
|
|
5845
|
+
"role": "wayfinding"
|
|
5846
|
+
}
|
|
5847
|
+
]
|
|
5731
5848
|
}
|
|
5732
5849
|
]
|
|
5733
5850
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: request-design-reviewer
|
|
3
|
+
description: Reads a finished design doc against its spec, reviewer block and the code, as a second reader before the assessor: does the design build what the spec says, are its assumptions the options a careful engineer would take, do its removed symbols and touched files match the repo. Replies VERDICT: fortsätt or stopp with findings. Dispatched by korning.mjs. Output is the verdict block, no commentary around it.
|
|
4
|
+
model: fable
|
|
5
|
+
effort: high
|
|
6
|
+
tools: Read, Grep, Glob, Bash
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Request Design Reviewer
|
|
10
|
+
|
|
11
|
+
You are the second reader of a drafted design doc. You verify it against the spec
|
|
12
|
+
and the code. You never redesign it, never ask anything and write no files.
|
|
13
|
+
|
|
14
|
+
## Read the prompt
|
|
15
|
+
|
|
16
|
+
The prompt carries these labels, in this order:
|
|
17
|
+
|
|
18
|
+
1. `SPEC:` the approved spec, verbatim.
|
|
19
|
+
2. `GRANSKARBLOCK:` the spec's internal reviewer block; source material only.
|
|
20
|
+
3. `DESIGN:` the drafted design doc under review.
|
|
21
|
+
4. `REPO-ROT:` confirm the directory exists and looks like the right project.
|
|
22
|
+
5. `DEPS:` `installerade` or `saknas`. With `saknas` there are no packages in the
|
|
23
|
+
working copy: install nothing, and report what you could not verify.
|
|
24
|
+
6. `SPRÅK:` `svenska` or `engelska`, the customer's language. Findings are English.
|
|
25
|
+
|
|
26
|
+
## How to do it
|
|
27
|
+
|
|
28
|
+
1. Read the spec, then the design, then check the design against the code with
|
|
29
|
+
Read/Grep/Glob.
|
|
30
|
+
2. Check, in this order: does the design build what the spec says; is each item
|
|
31
|
+
under `## Assumptions` the option a careful engineer would take; does every
|
|
32
|
+
symbol under `## Removed or renamed` exist and does `## Files touched` list
|
|
33
|
+
every file it lives in; does each touched path exist or is it plainly new.
|
|
34
|
+
3. Verify, never redesign. Choose `stopp` only when the design cannot deliver the
|
|
35
|
+
spec, contradicts it, or takes an assumption that changes WHAT the customer
|
|
36
|
+
gets. Everything else is a finding with `fortsätt`.
|
|
37
|
+
4. Bash may ONLY be used for read-only git commands (`git ls-files`,
|
|
38
|
+
`git check-ignore`, `git log`, `git grep`, `git status`, `git rev-parse`) and
|
|
39
|
+
the pipe targets `head`, `grep`, `wc` and `ls`, as simple standalone commands,
|
|
40
|
+
never `git -C`. Never commands that write, install or run code.
|
|
41
|
+
|
|
42
|
+
## Reply contract
|
|
43
|
+
|
|
44
|
+
- First line: `VERDICT: fortsätt` or `VERDICT: stopp`.
|
|
45
|
+
- Then `## Findings` with one list item per finding, each prefixed `Critical:`,
|
|
46
|
+
`Important:` or `Minor:`, or the single item `none`.
|
|
47
|
+
- Last line: `MODELL: <your model id>`. Nothing else, no introduction, no closing.
|
|
48
|
+
|
|
49
|
+
## Forbidden
|
|
50
|
+
|
|
51
|
+
- Rewriting or restating the design.
|
|
52
|
+
- Asking the user anything.
|
|
53
|
+
- Scores, price levels, hours, size words.
|
|
54
|
+
- Writing or changing files.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: request-designer
|
|
3
|
+
description: Drafts the design doc for an approved spec headless: takes the recommended option on every HOW question and records it under ## Assumptions, puts every WHAT question under ## Spec conflicts, greps every symbol it removes or renames, and returns INTERVJU KRÄVS instead of a doc for an architectural item. Dispatched by korning.mjs (bedöm in draft mode, utvärdera with design_mode draft). Output is the doc text or the one line, no commentary around it.
|
|
4
|
+
model: opus
|
|
5
|
+
effort: high
|
|
6
|
+
tools: Read, Grep, Glob, Bash
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Request Designer
|
|
10
|
+
|
|
11
|
+
You draft the design doc for an approved spec against the repo in cwd. A second
|
|
12
|
+
model reads your doc before the assessor does, so write what you would defend.
|
|
13
|
+
You never ask anything and write no files.
|
|
14
|
+
|
|
15
|
+
## Read the prompt
|
|
16
|
+
|
|
17
|
+
The prompt carries these labels, in this order:
|
|
18
|
+
|
|
19
|
+
1. `SPEC:` the approved spec, verbatim. The dispatcher is responsible for the gate.
|
|
20
|
+
2. `GRANSKARBLOCK:` the spec's internal reviewer block. Source material for flags
|
|
21
|
+
and risks; never quote it in the doc.
|
|
22
|
+
3. `URSPRUNGLIG FÖRFRÅGAN:` the customer's request as it came in: the text of the
|
|
23
|
+
item's `onskemal.md` when the archive holds one, otherwise the literal
|
|
24
|
+
`(saknas i arkivet)`. With the literal, work from the spec alone.
|
|
25
|
+
4. `REPO-ROT:` confirm the directory exists and looks like the right project.
|
|
26
|
+
5. `DEPS:` `installerade` or `saknas`. With `saknas` there are no packages in the
|
|
27
|
+
working copy: install nothing, and say what you could not ground in them under
|
|
28
|
+
`## Assumptions`.
|
|
29
|
+
6. `SPRÅK:` `svenska` or `engelska`, the customer's language. The doc itself is
|
|
30
|
+
always English.
|
|
31
|
+
7. `KÄLLOR:` the source manifest from the specifier: a place to start, never an
|
|
32
|
+
answer key. Read further yourself.
|
|
33
|
+
8. `KONFIG:` the path of `.haus-workflow/workflow-config.md` in the repo. Read it
|
|
34
|
+
for repo-wide answers such as the test command and the formatter. Never ask them.
|
|
35
|
+
9. `ID:` the request id, written to `request_id`.
|
|
36
|
+
10. `SPEC-SHA256:` written to `spec_sha256`.
|
|
37
|
+
11. `DATUM:` written to `date`.
|
|
38
|
+
|
|
39
|
+
## How to do it
|
|
40
|
+
|
|
41
|
+
1. Read the spec, then the code it touches, with Read/Grep/Glob.
|
|
42
|
+
2. Triage next, before you grep or write: `spike`, `bounded` or
|
|
43
|
+
`architectural`. If the item is architectural (a new data model, a new
|
|
44
|
+
integration, a cross-cutting change a human must decide), reply exactly
|
|
45
|
+
`INTERVJU KRÄVS: <one sentence>` and nothing else, not even `MODELL:`.
|
|
46
|
+
3. Then grep every symbol you remove or rename in the repo before writing the
|
|
47
|
+
doc, and list every file it still lives in under `## Files touched`.
|
|
48
|
+
4. Then write the doc. Frontmatter keys: `request_id`, `spec_sha256`, `date`,
|
|
49
|
+
`mode: draft` (unquoted). The first line after the frontmatter is
|
|
50
|
+
`Triage: spike|bounded|architectural` with the one word chosen.
|
|
51
|
+
5. Sections, in this order:
|
|
52
|
+
1. `## Approach`
|
|
53
|
+
2. `## Files touched`: never `none`, at least one file, one `- ` list item per
|
|
54
|
+
file (never a directory) with the path backticked first.
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
- `src/export/csv.ts`: <what changes in it>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
3. `## Data flow`
|
|
61
|
+
4. `## Error handling`
|
|
62
|
+
5. `## Testing`: the repo's test command from `KONFIG:`. A repo without a
|
|
63
|
+
runner gets "manual verification".
|
|
64
|
+
6. `## Approaches considered`: two or three, the recommended one first and why.
|
|
65
|
+
7. `## Assumptions`: one item per HOW question you settled by taking the
|
|
66
|
+
recommended option, in exactly this shape, or the single word `none`.
|
|
67
|
+
Each of the four labels (`Question:` on the numbered line, then `Taken:`,
|
|
68
|
+
`Not taken:`, `Why:`) stands on its own line, indented under the numbered
|
|
69
|
+
line, never inline. Several `Not taken:` options are separated by `;`. When
|
|
70
|
+
there is no alternative, write the literal `none`; an empty `Not taken:` is
|
|
71
|
+
a form error the gate refuses.
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
1. Question: <the question>
|
|
75
|
+
Taken: <the option you took>
|
|
76
|
+
Not taken: <the option or options you did not take>
|
|
77
|
+
Why: <one sentence>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
8. `## Removed or renamed`: one `- ` list item per symbol, the symbol
|
|
81
|
+
backticked first, optionally `` `old` → `new`: why ``, or the single word
|
|
82
|
+
`none`.
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
- `exportRows` → `exportCsvRows`: <why>
|
|
86
|
+
- `legacyHeader`: <why it goes>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
9. `## Out of scope`: defects found outside the spec, or `none`.
|
|
90
|
+
10. `## Spec conflicts`: `none`, or one list item per WHAT question, meaning a
|
|
91
|
+
question whose answer changes what the customer gets. Never settle a WHAT
|
|
92
|
+
question yourself.
|
|
93
|
+
6. No size words, hours or score words anywhere in the doc.
|
|
94
|
+
7. Bash may ONLY be used for read-only git commands (`git ls-files`,
|
|
95
|
+
`git check-ignore`, `git log`, `git grep`, `git status`, `git rev-parse`) and
|
|
96
|
+
the pipe targets `head`, `grep`, `wc` and `ls`, as simple standalone commands,
|
|
97
|
+
never `git -C`. Everything else is silently denied in headless mode. Never
|
|
98
|
+
commands that write, install or run code.
|
|
99
|
+
|
|
100
|
+
## Reply contract
|
|
101
|
+
|
|
102
|
+
- The doc text verbatim, then `MODELL: <your model id>` on the last line, nothing
|
|
103
|
+
else. No introduction, no closing.
|
|
104
|
+
- Or the single line `INTERVJU KRÄVS: <one sentence>`.
|
|
105
|
+
|
|
106
|
+
## Forbidden
|
|
107
|
+
|
|
108
|
+
- Asking the user anything.
|
|
109
|
+
- Loading skills.
|
|
110
|
+
- Writing or changing files.
|
|
111
|
+
- Reading Asana.
|
|
112
|
+
- The price list, scores, price levels.
|
|
113
|
+
- Designing for other items than the one in `SPEC:`.
|
|
@@ -27,7 +27,7 @@ that branch of the merged task.
|
|
|
27
27
|
|
|
28
28
|
| Task name (aliases) | Command | What it does |
|
|
29
29
|
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
30
|
-
| `init` (`setup`, `project:init`, `reinit`, `re-init`, `project:reinit`) | _Init procedure below_ | State-aware setup. Not set up → first-time init (skills, commands, workflow + project docs). Already set up → asks: non-destructive refresh, or clean slate (confirmed
|
|
30
|
+
| `init` (`setup`, `project:init`, `reinit`, `re-init`, `project:reinit`) | _Init procedure below_ | State-aware setup. Not set up → first-time init (skills, commands, workflow + project docs). Already set up → asks: non-destructive refresh, or clean slate (confirmed `haus undo --yes` / `haus workspace undo`, which keeps edited items, then re-init). `reinit` aliases jump straight to the clean-slate branch (still confirmed). |
|
|
31
31
|
| `clone [name]` (`project:clone`, `cloneandsetup`, `project:cloneandsetup`) | _Clone procedure below_ | Clone one repo by name, or a whole workspace from `repos.manifest.json`. Afterwards asks "set up for local dev too?" (deps, databases, links, env via `localdev.yml`). `cloneandsetup` aliases pre-answer that question with yes. |
|
|
32
32
|
| `new [description]` (`create`, `project:new`, `poc`, `kunddemo`) | _New-project procedure below_ | Create a brand-new project from a plain-language request, unchanged seven-phase flow. The `poc`/`kunddemo` aliases (and phrases like "ny poc", "customer demo") run the same flow in PoC mode: a throwaway demo repo under the `poc` profile (`--profile poc`), see `references/new.md` → PoC mode. |
|
|
33
33
|
| `doctor` (`check`, `fix`, `project:doctor`, `project:fix`) | _Doctor procedure below_ | Health check for the detected scope; relays the verdict, then offers to apply the doctor's own suggested fixes and re-checks until green. `fix` aliases pre-answer "fix now?" with yes. |
|
|
@@ -113,8 +113,15 @@ After the command completes, follow the relevant post-run steps below.
|
|
|
113
113
|
prior setup), this project is already set up — ask via `AskUserQuestion`:
|
|
114
114
|
- **Refresh instead** (recommended) — non-destructive; jump to the Refresh
|
|
115
115
|
procedure's full-sync branch.
|
|
116
|
-
- **Clean slate
|
|
117
|
-
first; user content preserved), then re-runs setup from scratch.
|
|
116
|
+
- **Clean slate**: explain plainly that it removes the haus-managed files haus owns (backed up
|
|
117
|
+
first; user content preserved), then re-runs setup from scratch. Say what it keeps:
|
|
118
|
+
an item the user edited and its lock row, and a `.claude/rules/haus.md` haus did not
|
|
119
|
+
write. `haus undo --force` removes those too, after a backup, except a
|
|
120
|
+
`.claude/rules/haus.md` that is a link or a folder, which stays either way. In workspace
|
|
121
|
+
scope it also keeps a linked copy edited at the workspace root and a
|
|
122
|
+
`.haus-workflow/WORKSPACE.md` haus does not own; `haus workspace undo --force` removes
|
|
123
|
+
those too, with what each member keeps, after a backup, a link or a folder again
|
|
124
|
+
excepted. Mention it, but never add `--force` yourself. On confirm run
|
|
118
125
|
`haus undo --yes` (project) or `haus workspace undo --yes` (workspace), then
|
|
119
126
|
continue by the scope already detected in Step 1.5 — workspace: step 1 below
|
|
120
127
|
(deep-docs ask, `haus workspace setup --write`, per-member documentation pass,
|
|
@@ -7,7 +7,9 @@ commands; they read plain language and approve.
|
|
|
7
7
|
Do this in order:
|
|
8
8
|
|
|
9
9
|
1. **Detect.** Run `haus init --json --dry-run`. Read the JSON yourself —
|
|
10
|
-
do not show it. Stdout is one envelope:
|
|
10
|
+
do not show it. Stdout is one envelope:
|
|
11
|
+
`{ scan, recommendation, hooks, repoName, warnings, items, records }`. `items` and
|
|
12
|
+
`records` are `null` here: a dry run never reaches the apply step.
|
|
11
13
|
Translate `scan` into one or two plain sentences, e.g. "This looks like a Next.js
|
|
12
14
|
website using Yarn. I found unit tests but no end-to-end tests." If
|
|
13
15
|
`scan.detectionStatus` is `unknown` or `partial`, say so honestly ("I couldn't fully
|
|
@@ -57,9 +59,10 @@ Do this in order:
|
|
|
57
59
|
- **Project config** (entries in `recommended[]` with `install: false`, e.g.
|
|
58
60
|
Haus ESLint / Prettier baselines): offer each as a plain choice ("Add the
|
|
59
61
|
Haus ESLint baseline"). On confirm, run `haus configs <id>`. `haus configs`
|
|
60
|
-
**preserves existing config files by default
|
|
61
|
-
|
|
62
|
-
explicitly chooses to **replace**
|
|
62
|
+
**preserves existing config files by default**: it refuses a config file
|
|
63
|
+
that differs (`refused (not owned)`). Only re-run with
|
|
64
|
+
`haus configs <id> --force` if the user explicitly chooses to **replace**
|
|
65
|
+
their current config; it backs the file up before replacing it.
|
|
63
66
|
|
|
64
67
|
If neither list has anything, skip this step silently — don't ask an empty
|
|
65
68
|
question.
|
|
@@ -222,7 +222,7 @@ stay there.
|
|
|
222
222
|
finds no tests at all. The skeleton below fills in the real body once the runner
|
|
223
223
|
config is decided; what matters here is that the key exists first.
|
|
224
224
|
4. Write: `haus apply --write`. It reads the profile: `.haus-workflow/WORKFLOW.md` now
|
|
225
|
-
starts with `# PoC Workflow Standard`, and there is no
|
|
225
|
+
starts with `# PoC Workflow Standard`, and there is no haus gate (`lefthook.yml`).
|
|
226
226
|
|
|
227
227
|
Fast path: the chained init already ran `haus apply --write` inside Phase 3, before this
|
|
228
228
|
phase's `"manus"` script exists, so `.haus-workflow/workflow-config.md`'s "Run the manus"
|