@brainervirus/workit-codex 7.5.2 → 7.6.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/.codex-plugin/plugin.json +1 -1
- package/dist/workit-hook.js +1 -0
- package/package.json +3 -3
- package/skills/workit-architecture/SKILL.md +72 -0
- package/skills/workit-architecture/agents/openai.yaml +3 -0
- package/skills/workit-architecture/references/instruction-files.md +52 -0
- package/skills/workit-architecture/references/vocabulary.md +53 -0
package/dist/workit-hook.js
CHANGED
|
@@ -133,6 +133,7 @@ Skills: load the skill, never act from memory of it (slash aliases /wk-<name>).
|
|
|
133
133
|
- fan out, parallelize, parallel agents, swarm: workit-fanout
|
|
134
134
|
- verify the app, smoke test, prove it works: workit-verify-app
|
|
135
135
|
- retro (user-invoked; offer it): workit-retro
|
|
136
|
+
- architecture, deepen modules (user-invoked; offer it): workit-architecture
|
|
136
137
|
`.trim();
|
|
137
138
|
|
|
138
139
|
// packages/workit-core/src/core/task-contract.ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brainervirus/workit-codex",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.6.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Workit Codex CLI/desktop plugin — shared MCP transport, hooks, and sixteen method skills",
|
|
6
6
|
"keywords": [
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"build": "bun scripts/build.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@brainervirus/workit-core": "^7.
|
|
42
|
-
"@brainervirus/workit-mcp": "^7.
|
|
41
|
+
"@brainervirus/workit-core": "^7.6.0",
|
|
42
|
+
"@brainervirus/workit-mcp": "^7.6.0"
|
|
43
43
|
},
|
|
44
44
|
"engines": {
|
|
45
45
|
"node": ">=24"
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workit-architecture
|
|
3
|
+
description: Rank cited deepening refactors from churn and ledger friction; never applied unapproved. Use for architecture.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Architecture: deepen the modules that cause friction
|
|
8
|
+
|
|
9
|
+
User-invoked: offer it, never start it yourself. It proposes and grills; it
|
|
10
|
+
never refactors without the user's approval. Use the words in
|
|
11
|
+
`references/vocabulary.md` exactly and the domain words in `GLOSSARY.md`.
|
|
12
|
+
|
|
13
|
+
## Deepening
|
|
14
|
+
|
|
15
|
+
1. **Scope by YAGNI.** A direction the user names wins. Otherwise find hot
|
|
16
|
+
spots: churn (`git log --since=6.months --name-only --format=`, counted per
|
|
17
|
+
file, skipping lockfiles, version-bump manifests, generated files, docs and
|
|
18
|
+
`chore(release)` commits), friction in `workit ledger list --last 200`
|
|
19
|
+
(failed checks and verdicts, rulings, `retro:` decisions) and
|
|
20
|
+
`workit test-audit <paths> --json`. State the window and paths in one line.
|
|
21
|
+
2. **Settled decisions stand.** Read `GLOSSARY.md`, `CODING_STANDARDS.md` and
|
|
22
|
+
ADRs when present. Never re-litigate an ADR without new evidence.
|
|
23
|
+
3. **Explore organically.** A read-only explorer (Claude Code: Explore; or
|
|
24
|
+
you) walks the hot spots under the limits in `references/vocabulary.md`
|
|
25
|
+
and returns cited friction. Run the deletion test on every suspect.
|
|
26
|
+
4. **Report 3-5 ranked candidates, then stop and wait for approval.** Each:
|
|
27
|
+
- files and modules;
|
|
28
|
+
- the friction, with **2 or more cited occurrences** (commit, ledger row,
|
|
29
|
+
PR, test-audit finding); a one-off is not a candidate;
|
|
30
|
+
- an interface sketch: what callers see, what moves behind the seam;
|
|
31
|
+
- what gets simpler and what becomes testable through that interface;
|
|
32
|
+
- **merge danger**: one-way or two-way door, plus blast radius (callers,
|
|
33
|
+
packages, public surface).
|
|
34
|
+
The text list is primary; offer an HTML report only if the host renders one.
|
|
35
|
+
5. **Grill the chosen one**: numbered questions, each with a recommended
|
|
36
|
+
answer; challenge a weak premise with evidence first. Settle the interface,
|
|
37
|
+
the seam, the tests to replace and the migration order; a module named for
|
|
38
|
+
a new concept gets its glossary entry (read the `workit-shape` skill's SKILL.md and follow it).
|
|
39
|
+
6. **Hand off on approval.** Several slices go into a plan for
|
|
40
|
+
`workit fanout plan <plan.json>`, with scopes and dependencies
|
|
41
|
+
(read the `workit-fanout` skill's SKILL.md and follow it). One slice goes to a build (read the `workit-implement` skill's SKILL.md and follow it). Record the
|
|
42
|
+
choice with `workit ledger decision "architecture: <id>" --why "<why>"`;
|
|
43
|
+
offer an ADR for a lasting rejection so the next run does not repeat it.
|
|
44
|
+
|
|
45
|
+
## Instruction files
|
|
46
|
+
|
|
47
|
+
Restructure AGENTS.md or CLAUDE.md in three escalating passes, **each its own
|
|
48
|
+
commit in one PR**, so the user can drop the later ones: remove no-ops;
|
|
49
|
+
progressive disclosure into topic files; coding rules to `CODING_STANDARDS.md`
|
|
50
|
+
and mechanical rules to checks. No commit adds a `workit knowledge lint`
|
|
51
|
+
finding. Never scaffold an empty file (`references/instruction-files.md`).
|
|
52
|
+
|
|
53
|
+
## Test sweep
|
|
54
|
+
|
|
55
|
+
Run `workit test-audit <paths> --json` over the suite or one hot spot and
|
|
56
|
+
report findings by module, worst first. On approval, the bad tests are
|
|
57
|
+
replaced (read the `workit-test-audit` skill's SKILL.md and follow it).
|
|
58
|
+
|
|
59
|
+
## Example
|
|
60
|
+
|
|
61
|
+
Bad: "The CLI is messy, so I split router.ts in five." Uncited, unapproved.
|
|
62
|
+
|
|
63
|
+
Good: "1. Check runner (check.ts, evidence.ts), 3 occurrences: commits a1b2c3
|
|
64
|
+
and d4e5f6 edit both for one fix; ledger row 41 is a `check` red on a hidden
|
|
65
|
+
timeout. Sketch: `runCheck(spec)` returns evidence, the timeout behind it, so
|
|
66
|
+
timeouts test without a shell. Two-way door, 2 callers in one package."
|
|
67
|
+
|
|
68
|
+
## Check
|
|
69
|
+
|
|
70
|
+
```sh
|
|
71
|
+
workit knowledge lint # no new finding after each instruction-files commit
|
|
72
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Instruction-files mode (AGENTS.md, CLAUDE.md)
|
|
2
|
+
|
|
3
|
+
Instruction files are paid for in every session that reads them. Restructure
|
|
4
|
+
them in three escalating passes. Each pass is its own commit in one PR, in
|
|
5
|
+
this order, so the user can keep pass 1 and drop pass 3. Run
|
|
6
|
+
`workit knowledge lint` before pass 1 and after every commit: no commit adds
|
|
7
|
+
a finding, and the lint exits 0 after the last pass, or the report lists the
|
|
8
|
+
findings that remain and why.
|
|
9
|
+
|
|
10
|
+
After each commit, run `workit check test`. A sentence a test pins stays,
|
|
11
|
+
unless the user approves changing that test. Commit each pass with
|
|
12
|
+
`workit git commit -m "<type>: <pass>" -- <paths>`, then open the PR
|
|
13
|
+
(read the `workit-ship` skill's SKILL.md and follow it).
|
|
14
|
+
|
|
15
|
+
Before pass 1, report the current byte counts and the plan for each pass, then
|
|
16
|
+
wait for approval. A pass with nothing to do is skipped and said so, not
|
|
17
|
+
padded.
|
|
18
|
+
|
|
19
|
+
## Pass 1: remove no-ops
|
|
20
|
+
|
|
21
|
+
Delete lines that would change no behavior if removed: "be thorough", "write
|
|
22
|
+
clean code", "follow best practices", restated defaults of the host, notes
|
|
23
|
+
about one past session, `path:line` references, and rules whose mistake a type,
|
|
24
|
+
lint or check now prevents. Nothing moves in this pass; it only deletes.
|
|
25
|
+
|
|
26
|
+
## Pass 2: progressive disclosure
|
|
27
|
+
|
|
28
|
+
Keep the root file to what every session needs: commands, workflow, and
|
|
29
|
+
"Read before <task>: <file>" pointers. Move topic detail (testing, release,
|
|
30
|
+
hosts, architecture) into topic files under an existing docs folder, one file
|
|
31
|
+
per topic, each opened by when to read it. Move text verbatim first; rewording
|
|
32
|
+
belongs in pass 1 or a later change. Every pointer from AGENTS.md or
|
|
33
|
+
CLAUDE.md must resolve (the lint's `broken-link` rule). The lint does not read
|
|
34
|
+
topic files: check their own links and content by hand.
|
|
35
|
+
|
|
36
|
+
## Pass 3: standards and checks
|
|
37
|
+
|
|
38
|
+
- A judgment rule a reviewer must weigh goes to `CODING_STANDARDS.md`; the
|
|
39
|
+
root file keeps one pointer to it.
|
|
40
|
+
- A mechanical rule (a forbidden import, a naming pattern, a file that must
|
|
41
|
+
exist) becomes a check instead of prose: a lint rule, a test, or a
|
|
42
|
+
configured `workit check <name>`. Show the check failing on a planted
|
|
43
|
+
violation, then delete the sentence.
|
|
44
|
+
- No rule lives in two files (`duplicate-rule`).
|
|
45
|
+
|
|
46
|
+
## Never
|
|
47
|
+
|
|
48
|
+
- Create a file without its first real entry in the same commit. The lint
|
|
49
|
+
flags a scaffolded `CODING_STANDARDS.md` or `GLOSSARY.md` (`scaffold-file`);
|
|
50
|
+
for a topic file, that check is yours.
|
|
51
|
+
- Squash the passes into one commit, or mix a behavior change into them.
|
|
52
|
+
- Grow the root file past the lint's byte budget (`agents-budget`).
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Deepening vocabulary
|
|
2
|
+
|
|
3
|
+
Use these words exactly in every candidate. Do not drift into "component",
|
|
4
|
+
"service", "API" or "boundary".
|
|
5
|
+
|
|
6
|
+
| Term | Meaning |
|
|
7
|
+
| --- | --- |
|
|
8
|
+
| Module | Anything with an interface and an implementation: a function, a file, a package, a slice across tiers |
|
|
9
|
+
| Interface | Everything a caller must know: types, invariants, ordering, error modes, configuration, cost |
|
|
10
|
+
| Depth | Behavior a caller or test reaches per unit of interface learned. Deep: much behind little. Shallow: the interface is nearly as complex as the implementation |
|
|
11
|
+
| Seam | Where behavior can change without editing that place; where an interface lives |
|
|
12
|
+
| Adapter | A concrete thing that fills a seam (production, in-memory, fake) |
|
|
13
|
+
| Leverage | What callers gain from depth: one implementation pays back across many call sites and tests |
|
|
14
|
+
| Locality | What maintainers gain: change, bugs and verification concentrate in one place |
|
|
15
|
+
|
|
16
|
+
## Tests to run on a suspect
|
|
17
|
+
|
|
18
|
+
- **Deletion test.** Imagine deleting the module. Complexity vanishes: it was
|
|
19
|
+
a pass-through, so inline it. Complexity reappears across callers: it earns
|
|
20
|
+
its keep. A deepening concentrates complexity; it does not just move it.
|
|
21
|
+
- **Interface is the test surface.** Tests that must reach past the interface
|
|
22
|
+
mean the module has the wrong shape.
|
|
23
|
+
- **One adapter is a hypothetical seam; two are a real one.** Do not add a
|
|
24
|
+
port unless something varies across it (production and test count).
|
|
25
|
+
|
|
26
|
+
## What the explorer looks for
|
|
27
|
+
|
|
28
|
+
- One concept that needs a hop through many small modules to understand.
|
|
29
|
+
- Shallow modules: wide interface, thin implementation.
|
|
30
|
+
- Pure helpers extracted only for tests while the bugs live in how they are
|
|
31
|
+
called (no locality).
|
|
32
|
+
- Coupled modules leaking through their seams: one fix edits both (churn shows
|
|
33
|
+
them changing together).
|
|
34
|
+
- Code that is untested, or hard to test through its current interface.
|
|
35
|
+
|
|
36
|
+
The explorer is read-only (on Claude Code, the Explore agent). It reads code,
|
|
37
|
+
git history, `workit ledger list` and `workit test-audit` output only: never
|
|
38
|
+
session transcripts and never another workspace. It copies no secret, token
|
|
39
|
+
or personal data into its findings. It returns only cited findings (file,
|
|
40
|
+
commit, ledger row), never a refactor.
|
|
41
|
+
|
|
42
|
+
## Dependency categories (how the deeper module is tested)
|
|
43
|
+
|
|
44
|
+
1. In-process (pure, in-memory): merge and test through the new interface.
|
|
45
|
+
2. Local stand-in exists (temp dir, in-memory store): test with the stand-in;
|
|
46
|
+
the seam stays internal.
|
|
47
|
+
3. Owned but remote (your own service): a port at the seam, an in-memory
|
|
48
|
+
adapter in tests.
|
|
49
|
+
4. Third party: an injected port, a fake adapter in tests.
|
|
50
|
+
|
|
51
|
+
Replace, do not layer. An old test on a shallow module is deleted only after
|
|
52
|
+
naming the break it catches and showing that a test at the deeper interface
|
|
53
|
+
fails on that planted break (read the `workit-test-audit` skill's SKILL.md and follow it). Until then it stays.
|