noskills 4.1.50 → 4.1.53

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 (92) hide show
  1. package/README.md +345 -890
  2. package/chunks/approve-ZX62EG5U.js +1 -0
  3. package/chunks/{ask-IZXOXJHB.js → ask-VGI3BFZW.js} +1 -1
  4. package/chunks/block-ERQESYMH.js +1 -0
  5. package/chunks/cancel-FOVCYBQY.js +1 -0
  6. package/chunks/{chunk-K223KAUB.js → chunk-2GF5IUQD.js} +1 -1
  7. package/chunks/chunk-5CNPFLE6.js +1 -0
  8. package/chunks/chunk-5P46WSNG.js +5 -0
  9. package/chunks/{chunk-AQWB2PVR.js → chunk-5URW6X3N.js} +93 -92
  10. package/chunks/{chunk-6OQNXZAN.js → chunk-6YHWLEJ4.js} +26 -26
  11. package/chunks/chunk-AP3YBNPX.js +1 -0
  12. package/chunks/{chunk-OCDUS26F.js → chunk-DEIZVYT6.js} +1 -1
  13. package/chunks/chunk-H77MLIL5.js +4 -0
  14. package/chunks/{chunk-TI4CLT2V.js → chunk-HNAHPI6V.js} +1 -1
  15. package/chunks/{chunk-E7UED6DA.js → chunk-JVCVWI3B.js} +1 -1
  16. package/chunks/{chunk-ESTTTPON.js → chunk-KYQ77E7T.js} +1 -1
  17. package/chunks/{chunk-JCIANZPY.js → chunk-LBPD4EIH.js} +1 -1
  18. package/chunks/chunk-OKM4FE4G.js +1 -0
  19. package/chunks/chunk-OVLGUKPG.js +1 -0
  20. package/chunks/chunk-PKYW3S5P.js +5 -0
  21. package/chunks/chunk-RGGYSKJY.js +5 -0
  22. package/chunks/chunk-RJX4ZXQ4.js +2 -0
  23. package/chunks/{chunk-WWPJMOT3.js → chunk-SVJVJDZR.js} +1 -1
  24. package/chunks/{chunk-JKKCV4KM.js → chunk-UG26APX2.js} +1 -1
  25. package/chunks/{chunk-2X2U2VC5.js → chunk-UT6ZCLRA.js} +1 -1
  26. package/chunks/chunk-XNGHRJVK.js +1 -0
  27. package/chunks/{chunk-CLCZ7IO3.js → chunk-YSSDQJTT.js} +1 -1
  28. package/chunks/chunk-YTNM7A5Y.js +3 -0
  29. package/chunks/chunk-Z3O5HAIO.js +2 -0
  30. package/chunks/{claude-code-F64HRHHR.js → claude-code-BWCSAVK2.js} +1 -1
  31. package/chunks/{cmd-NWSNAUKC.js → cmd-ZXO6KFK6.js} +1 -1
  32. package/chunks/concern-2PON4VPG.js +1 -0
  33. package/chunks/{config-EPT7NOOO.js → config-CZDLCSOC.js} +1 -1
  34. package/chunks/delegate-VRPCGUT2.js +1 -0
  35. package/chunks/diagrams-D5CYTTWA.js +1 -0
  36. package/chunks/diagrams-I2QKL7WR.js +1 -0
  37. package/chunks/done-WQDGQZ5D.js +1 -0
  38. package/chunks/followup-Q3RLSNNM.js +1 -0
  39. package/chunks/{free-5HORD4VB.js → free-R4ZTZ76O.js} +1 -1
  40. package/chunks/init-HTCNOWTZ.js +1 -0
  41. package/chunks/invoke-hook-675IUCLN.js +13 -0
  42. package/chunks/{kiro-XJ6XH4Q4.js → kiro-RGYUKJAX.js} +1 -1
  43. package/chunks/learn-MWUFAR2G.js +7 -0
  44. package/chunks/{list-SG2MZH7M.js → list-6EQP6VUL.js} +1 -1
  45. package/chunks/manager-Q7DRXNNO.js +6 -0
  46. package/chunks/{mod-AU5SVHO5.js → mod-A77UWGGG.js} +1 -1
  47. package/chunks/mod-TYCXSLSH.js +1 -0
  48. package/chunks/next-7W4YVHSZ.js +7 -0
  49. package/chunks/{ollama-IVHLR7VV.js → ollama-LTZ43OHQ.js} +1 -1
  50. package/chunks/{opencode-MTSBCZYY.js → opencode-PZDL7VDP.js} +1 -1
  51. package/chunks/pack-DXWS4PMA.js +5 -0
  52. package/chunks/{purge-573OIQZI.js → purge-XZ5EOCFP.js} +1 -1
  53. package/chunks/reopen-VATALF56.js +1 -0
  54. package/chunks/reset-BL73UVLM.js +1 -0
  55. package/chunks/review-VF6JOTLX.js +1 -0
  56. package/chunks/rule-ODX4WMCS.js +6 -0
  57. package/chunks/run-J5Z6R4DP.js +3 -0
  58. package/chunks/session-DFMI2GCC.js +1 -0
  59. package/chunks/spec-3PAUTPIT.js +1 -0
  60. package/chunks/status-5JHFFTMD.js +1 -0
  61. package/chunks/sync-CVEZ4FMQ.js +1 -0
  62. package/chunks/{watch-ELIW23EO.js → watch-I7Q3AEAQ.js} +7 -7
  63. package/chunks/web-JOWEH622.js +1 -0
  64. package/chunks/wontfix-CJMNFDCG.js +1 -0
  65. package/noskills.js +1 -1
  66. package/package.json +1 -1
  67. package/chunks/approve-LYDFDSXE.js +0 -1
  68. package/chunks/block-4IUG6QYT.js +0 -1
  69. package/chunks/cancel-STVRTPSC.js +0 -1
  70. package/chunks/chunk-4N7N37OY.js +0 -1
  71. package/chunks/chunk-GOLHD4DZ.js +0 -1
  72. package/chunks/chunk-IZMNMJYU.js +0 -16
  73. package/chunks/chunk-JNVM2KAE.js +0 -1
  74. package/chunks/chunk-MSJSMJL2.js +0 -1
  75. package/chunks/chunk-RMCTOOQL.js +0 -1
  76. package/chunks/chunk-RTD42HPS.js +0 -2
  77. package/chunks/concern-NQODAEHU.js +0 -1
  78. package/chunks/done-TLRZYAUZ.js +0 -1
  79. package/chunks/init-A3VTACZC.js +0 -1
  80. package/chunks/invoke-hook-Y2YREMYB.js +0 -11
  81. package/chunks/manager-5AJ7QWMG.js +0 -6
  82. package/chunks/next-GSQE7GYI.js +0 -8
  83. package/chunks/pack-KWRZVNBH.js +0 -5
  84. package/chunks/reopen-G7ZMJSB7.js +0 -1
  85. package/chunks/reset-WRG3L4QP.js +0 -1
  86. package/chunks/rule-HMBAP5LJ.js +0 -6
  87. package/chunks/run-CC6MLCNO.js +0 -3
  88. package/chunks/session-TYOM74BQ.js +0 -1
  89. package/chunks/spec-LVJCLNRO.js +0 -1
  90. package/chunks/status-YALP7W5Y.js +0 -1
  91. package/chunks/sync-L7E5Y3OG.js +0 -1
  92. package/chunks/wontfix-4L3IAWLG.js +0 -1
package/README.md CHANGED
@@ -1,32 +1,45 @@
1
1
  # [@eser/noskills](./)
2
2
 
3
- State-machine orchestrator for AI coding agents. Instead of loading skills into
4
- context and hoping the agent picks the right one, noskills pushes exactly the
5
- right instruction at the right time the agent never decides what to do next,
6
- the state machine does.
3
+ AI agents are powerful. But left alone, they take shortcuts — they skip
4
+ requirements, rush past edge cases, declare "done" when it isn't, and forget
5
+ your spec/PRD details halfway through. You end up babysitting the thing that was
6
+ supposed to save you time.
7
7
 
8
- ## Status: Beta
8
+ Noskills is here to fix this. It's designed as a state-machine orchestrator for
9
+ AI coding agents. An agent can't skip discovery, can't ignore tests, can't
10
+ declare victory without proof. Not because a prompt says "please don't" —
11
+ because the system mechanically blocks it.
9
12
 
10
- noskills is in active beta. We've battle-tested it with Claude Code — the
11
- discovery flow, sub-agent orchestration, verification backpressure, and the full
12
- spec lifecycle are working in production use. Kiro has full integration
13
- (steering files, hooks, custom agents, spec projection, MCP registration) but
14
- needs end-to-end testing. Other platforms (Cursor, Copilot, Windsurf) have rule
15
- sync support.
13
+ Think of it as a Scrum Master for your agents.
14
+
15
+ Noskills provides you to a better workflow and context health with replacing
16
+ skill-packs. Loading skills into context and hoping agents pick the right one is
17
+ a pull model — and it doesn't work. noskills is a push model: it delivers
18
+ exactly the right instruction at the right time. The agent never decides what to
19
+ do next. The state machine does.
20
+
21
+ Not every task needs a full discovery cycle. Bug fix? ship-fast mode — 2
22
+ questions, spec in 2 minutes. Major feature? full mode with adaptive follow-ups.
23
+ You pick the depth. See [Discovery Modes](#discovery-modes) below.
16
24
 
17
25
  If you want to test noskills with a platform other than Claude Code, reach out —
18
26
  we'd love early feedback. Find me at [github.com/eser](https://github.com/eser)
19
27
  or [@eserozvataf](https://x.com/eserozvataf).
20
28
 
21
- **Coming next:** deeper rule management, concern customization, and richer
22
- integrations for Cursor, Copilot, and Windsurf. Star the repo and watch for
23
- updates.
29
+ ## The Problem
30
+
31
+ Agents have a context rot problem. The more skills, rules, and conventions you
32
+ load upfront, the worse the agent performs — its context window fills with
33
+ instructions it doesn't need yet, and it forgets the ones it does.
24
34
 
25
- ## Why
35
+ You say "add photo upload with validation." The agent says "on it!" and starts
36
+ coding immediately. Twenty minutes later you discover it skipped validation,
37
+ forgot error handling, deleted your existing code, and declared the task
38
+ complete. You correct it. It fixes one thing, breaks another. Context fills up.
39
+ The agent forgets or gets distracted even you told it ten minutes ago. You start
40
+ over.
26
41
 
27
- AI coding agents have a context rot problem. The more skills, rules, and
28
- conventions you load upfront, the worse the agent performs — its context window
29
- fills with instructions it doesn't need yet, and it forgets the ones it does.
42
+ ### Why skills don't work
30
43
 
31
44
  Skills are a "pull" model: the agent decides which skill to load. This creates
32
45
  two failure modes — picking the wrong skill (wasted context) and needing
@@ -42,82 +55,120 @@ The agent calls `noskills next`, gets exactly what it needs for the current
42
55
  phase, acts on it, and calls `noskills next` again. No skill selection, no
43
56
  context pollution, no forgetting.
44
57
 
45
- ## Before & After
58
+ ## Noskills Solution
59
+
60
+ **Before you code, it makes you think.** noskills asks 6 discovery questions
61
+ that probe product, engineering, and QA at the same time. Not a checklist — the
62
+ questions adapt to your answers. If you say "WebSocket," it asks about
63
+ reconnection. If you're vague, it pushes back. You end up with a spec that
64
+ reflects what you actually need, not what the agent guessed.
65
+
66
+ **It generates a real spec with real tasks.** Discovery answers become a spec
67
+ with concrete tasks and acceptance criteria. You review it, adjust it, approve
68
+ it. The agent doesn't touch code until you say go.
69
+
70
+ **Each task runs in isolation.** The main agent orchestrates, sub-agents
71
+ execute. Fresh context per task. No context rot, no forgotten requirements, no
72
+ "the agent got confused after 30 minutes."
73
+
74
+ **The agent can't lie about being done.** Tests run before a task is accepted.
75
+ The agent reports against specific acceptance criteria, not vibes. Unfinished
76
+ items carry forward as debt — they don't disappear.
77
+
78
+ **Your concerns shape everything.** "We're open-source" isn't a label — it's a
79
+ lens. It injects documentation requirements into every spec, contributor checks
80
+ into every review, and license reminders into every task. Stack multiple
81
+ concerns to define your project's character.
82
+
83
+ **One source of truth for all tools.** Write rules once. noskills generates
84
+ CLAUDE.md, AGENTS.md, .cursorrules, Kiro steering files, and more. Your teammate
85
+ on Cursor and your teammate on Claude Code get the same conventions,
86
+ automatically.
87
+
88
+ **A human who's always in charge.** noskills never makes decisions silently.
89
+ Discovery questions -> you answer. Spec approval -> you decide. Architectural
90
+ choices -> you pick. Concern tensions -> you resolve. The agent executes, you
91
+ decide. Explicit > Clever.
92
+
93
+ ### Before & After
46
94
 
47
95
  **Without noskills:**
48
96
 
49
97
  ```
50
98
  You: "Add photo upload with validation"
51
- Agent: *reads 17 skill files into context*
52
- Agent: *picks wrong skill, starts building auth instead*
53
- Agent: "I've implemented a comprehensive authentication system..."
54
- You: "No, photo UPLOAD"
55
- Agent: *context is now 60% full with auth code it wrote*
56
- Agent: *starts photo upload but forgets validation requirement*
99
+ Agent: *starts coding immediately*
57
100
  Agent: "Done! Photo upload is working."
58
- You: *tests* "There's no validation. And you deleted my error handler."
101
+ You: "There's no validation. And you deleted my error handler."
59
102
  Agent: "I apologize, let me fix that..."
60
- Agent: *context window full, compaction happens*
61
- Agent: *forgets everything, starts from scratch*
103
+ *context fills up, agent forgets everything, starts from scratch*
62
104
  ```
63
105
 
64
106
  **With noskills:**
65
107
 
66
108
  ```
67
109
  You: "Add photo upload with validation"
68
- noskills: Discovery Q1/6: "What do users do today without this?"
69
- You: "They fill forms manually, it's slow"
70
- noskills: Q2/6: "1-star and 10-star versions?"
110
+ noskills: "What do users do today without this?"
111
+ You: "They fill forms manually"
112
+ noskills: "1-star and 10-star versions?"
71
113
  You: "1-star: basic upload. 10-star: auto-detect from photo"
72
- ... 4 more questions ...
114
+ ... 4 more questions, each adapting to your answers ...
73
115
  noskills: "Here's your spec. 5 tasks. Approve?"
74
116
  You: "Approved"
75
- noskills -> Agent: "Task 1: Create upload endpoint. Acceptance: returns 200 for JPEG/PNG/WebP, 400 for invalid."
76
- Agent: *implements task 1 in fresh context*
77
- noskills: "Tests pass. Status report: what's done?"
78
- Agent: "Endpoint works. Error handling done. Docs not yet."
79
- noskills: "Docs carried as debt. Task 2: Add validation..."
80
- *Each task: fresh context, clear scope, verified before advancing*
117
+ Agent: *implements task 1 in fresh context, tests pass, reports progress*
118
+ Agent: *implements task 2 in fresh context, tests pass, reports progress*
119
+ *Each task: clear scope, verified, nothing forgotten*
81
120
  ```
82
121
 
83
- ## What You Get
122
+ ### How it works (briefly)
84
123
 
85
- **Discovery that actually discovers.** Not "Got it, I'll start coding." noskills
86
- asks 6 questions that probe product, engineering, and QA simultaneously — with
87
- sub-questions injected by your active concerns. The agent scans your codebase
88
- first, challenges your assumptions, then asks. You get a spec that reflects what
89
- you actually need, not what the agent guessed.
124
+ Every spec moves through phases:
90
125
 
91
- **Specs that track themselves.** Every spec has a status (draft -> approved ->
92
- executing -> done), tasks with checkboxes, and acceptance criteria from both the
93
- spec AND your active concerns. You don't track progress — noskills tracks it.
94
- The agent reports against specific criteria, not vibes.
126
+ ```
127
+ IDLE DISCOVERY REVIEW DRAFT APPROVED EXECUTING → DONE
128
+ ```
95
129
 
96
- **Agents that can't lie about being done.** When the agent says "task done,"
97
- noskills runs your test suite first. If tests fail, the task stays incomplete —
98
- no exceptions. Then it asks for a status report against each acceptance
99
- criterion. Items the agent didn't finish carry forward as debt with increasing
100
- urgency. The agent can't declare victory and move on.
130
+ At each phase, the agent gets exactly the instructions it needs — nothing more.
131
+ In DISCOVERY, it can't edit files (mechanically blocked, not just asked nicely).
132
+ In EXECUTING, it delegates to sub-agents with fresh context per task. At every
133
+ gate, you decide.
101
134
 
102
- **Context that never rots.** Each task runs in a sub-agent with fresh context.
103
- The main agent orchestrates, sub-agents execute. No `/clear` gymnastics, no "the
104
- agent forgot my requirements." State lives in files, not in the agent's memory.
135
+ The agent calls `noskills next`, gets a JSON payload with its current task,
136
+ behavioral rules, and concern reminders. It does the work, calls `noskills next`
137
+ again.
105
138
 
106
- **Concerns that shape everything.** "We're open-source" isn't a wish it's a
107
- lens that injects documentation requirements into every spec,
108
- contributor-friendliness checks into every review, and permissive-default
109
- reminders into every task. Stack concerns to define your project's character.
139
+ **Hooks enforce the rules at the system level.** The agent doesn't know hooks
140
+ exist. It just can't do things it shouldn't — like editing files during
141
+ discovery or running git commands. This is the difference between "please don't"
142
+ and "you can't."
110
143
 
111
- **One source of truth for every tool.** Write rules once in `.eser/rules/`.
112
- noskills generates AGENTS.md CLAUDE.md, .cursorrules, Kiro steering files,
113
- Copilot instructions, Windsurf rules, OpenCode AGENTS.md + plugins, Codex CLI
114
- hooks + TOML agents, and Copilot CLI hooks + MCP config. Your teammate on Cursor
115
- and your teammate on Claude Code both get the same conventions, automatically.
144
+ ### Key concepts
116
145
 
117
- **A human who's always in charge.** noskills never makes decisions silently.
118
- Discovery questions -> you answer. Spec approval -> you decide. Architectural
119
- choices -> you pick. Concern tensions -> you resolve. The agent executes, you
120
- decide. Explicit > Clever.
146
+ **Discovery** Adaptive questions that challenge your assumptions, surface edge
147
+ cases, and catch things you'd miss. Discovery modes shape the depth.
148
+
149
+ **Concerns** — your project's DNA. "open-source" adds documentation requirements
150
+ everywhere. "beautiful-product" demands every UI state is designed. "move-fast"
151
+ accepts good-enough. Concerns stack — they inject into discovery, specs,
152
+ execution, and verification.
153
+
154
+ **Specs** — living documents with tasks, acceptance criteria, and status
155
+ tracking. Not a plan the agent ignores — a contract it's held to.
156
+
157
+ **Sub-agent pipeline** — main agent orchestrates, sub-agents execute individual
158
+ tasks in fresh context. Verifier checks the work. Test-writer ensures coverage.
159
+ No context rot.
160
+
161
+ **Verification backpressure** — tests must pass before a task is accepted.
162
+ Unfinished items become debt that follows the agent around with increasing
163
+ urgency.
164
+
165
+ **Packs** — installable bundles of rules and concerns.
166
+ `noskills pack install typescript` gives you 3 rules and a concern. Share packs
167
+ across projects or teams.
168
+
169
+ **Learnings** — mistakes from past specs are remembered and surfaced in future
170
+ discovery. "Last time you assumed SDK v2 and it was v3" appears before you make
171
+ the same mistake.
121
172
 
122
173
  ### Discovery Modes
123
174
 
@@ -133,299 +184,107 @@ Before the six questions, noskills asks which discovery mode to use:
133
184
 
134
185
  The mode shapes how questions are asked and which concern extras appear.
135
186
 
136
- ### Premise Challenge
137
-
138
- Before Q1, noskills challenges the spec's premises:
139
-
140
- - Is this the right problem to solve?
141
- - What happens if we do nothing?
142
- - What existing code already partially solves this?
143
-
144
- Premises are stored in the spec. Disagreements are recorded with the user's
145
- revision. All subsequent questions reference agreed premises.
146
-
147
- ### Alternatives Generation
148
-
149
- After discovery is approved, noskills prompts for 2-3 implementation approaches
150
- before generating the spec draft. The user picks one (or skips). The chosen
151
- approach shapes the spec's tasks and architecture.
187
+ ## Who is this for
152
188
 
153
- ### Plans That Get Pre-Filled
189
+ **Vibe coders** who are tired of babysitting agents — you want to describe what
190
+ you need and get it built correctly. ship-fast mode: 2 questions, 2 minutes,
191
+ spec ready. Autonomous mode runs overnight.
154
192
 
155
- When you provide a detailed description (>500 chars) or a plan file
156
- (`--from-plan`), noskills tells the agent to extract answers from your input and
157
- present them for confirmation — not ask from scratch. Each extraction is marked
158
- as [STATED] (your words) or [INFERRED] (agent's interpretation) so you can catch
159
- misunderstandings.
193
+ **Solo builders** who use AI agents daily and want structure without overhead.
194
+ Discovery catches what you'd miss. Verification catches what the agent skips.
160
195
 
161
- ## Who Is This For
196
+ **Tech leads and engineering managers** who need their team's agents to follow
197
+ the same conventions, pass the same quality gates, and produce auditable specs —
198
+ across Cursor, Claude Code, Kiro, and every other tool.
162
199
 
163
- noskills is for builders who use AI coding agents daily and are tired of
164
- babysitting themrepeating the same corrections, watching the agent forget
165
- requirements mid-session, and manually tracking what's done and what isn't. Solo
166
- builders get a structured workflow that keeps the agent focused. Teams get a
167
- shared source of truth that every tool and every teammate inherits
168
- automatically.
169
-
170
- ## How noskills differs
200
+ **Product owners and PMs** who want to define specs, delegate questions to
201
+ engineers, and approve results without touching a terminal. The web dashboard
202
+ and delegation system are built for you.
171
203
 
172
- | | Sequential Thinking | gstack | Skills / Rules | Ralph Loops | noskills |
173
- | ------------------------- | ----------------------------------------- | ------------------------------------------------ | --------------------------------- | ---------------------------------------- | ------------------------------------------ |
174
- | What it does | Structures agent's internal thinking | Role-based slash commands (CEO, Eng, QA) | Loads rules into context | Resets session, keeps state in files | Manages workflow via state machine |
175
- | Metaphor | "Think out loud" | "Virtual team" | "Law book" | "Clean desk every turn" | "Scrum Master" |
176
- | User role | None — agent self-talks | Chooses which role to invoke | Writes rules, hopes agent follows | Manages context manually | Active decision-maker at every gate |
177
- | Enforcement | None | None — behavioral | None — behavioral | Context reset only | Mechanical (hooks block actions) |
178
- | State tracking | Thought history (in-memory) | Learnings (cross-session) | None | File-based (manual) | Full state machine, per-spec |
179
- | File control | None | None | None | None | Phase-based edit control |
180
- | Sub-agents | None | None (single agent, multiple roles) | None | None | Executor / verifier / test-writer pipeline |
181
- | Discovery | None | /office-hours (similar concept) | None | None | 6 structured questions + concerns |
182
- | Works alongside noskills? | Yes — ST for thinking, noskills for doing | Yes — gstack for roles, noskills for enforcement | Replaced by noskills | Automated by noskills sub-agent pipeline | — |
183
-
184
- **The core difference:** other tools tell the agent what to do and hope it
185
- listens. noskills mechanically restricts what the agent _can_ do. When the agent
186
- is in DISCOVERY, it literally cannot edit files — not because a rule says
187
- "don't" but because a hook blocks the operation. That is the difference between
188
- behavioral guidance and mechanical enforcement.
189
-
190
- noskills is not a replacement for any of these tools. Sequential Thinking helps
191
- agents reason better. gstack assigns useful roles. Both can run alongside
192
- noskills. The distinction is that noskills owns the workflow — who does what,
193
- when, and whether the result was verified — while the others own the thinking or
194
- the persona.
195
-
196
- **noskills vs gstack in depth:** gstack is a collection of behavioral skills —
197
- each skill is a 2000+ line prompt that tells the agent how to behave. Office
198
- hours asks 6 questions (noskills: discovery). CEO review selects a scope mode
199
- (noskills: discovery modes). Eng review checks architecture and tests (noskills:
200
- verifier pipeline + mandatory ACs). The key difference: gstack skills are
201
- behavioral instructions the agent may or may not follow. noskills pushes exactly
202
- the right instruction at the right time via a state machine, and enforces
203
- compliance via hooks. gstack's /office-hours produces a design doc. noskills'
204
- discovery produces a spec with tasks, ACs, and a state machine that tracks
205
- execution. Both are valuable — gstack for thinking, noskills for doing.
204
+ ## Quick Start
206
205
 
207
- ## The Mental Model
206
+ Open your AI coding agent (Claude Code, Cursor, Kiro, Copilot, etc.) and tell
207
+ it:
208
208
 
209
209
  ```
210
- .cursorrules -> .cursor/rules/*.mdc -> eser/rules + skills -> noskills
211
- (1 file) (modular, 1 tool) (portable, curated) (state-driven)
210
+ Run `npx eser@latest noskills init` it will scaffold your project and guide you through setup.
212
211
  ```
213
212
 
214
- Each generation solved one bottleneck and discovered the next:
215
-
216
- 1. **`.cursorrules`** — single file, single tool. Couldn't split, couldn't
217
- scale, couldn't travel across tools.
218
- 2. **`.cursor/rules/*.mdc`** — modular, but still locked to Cursor.
219
- 3. **`eser/rules` + `eser-rules-manager`** — created as a portable,
220
- tool-agnostic instruction system. This **predated** Anthropic's Skills spec.
221
- When Skills arrived, eser/rules was adapted into skills format — validating
222
- the ecosystem was heading where eser/rules had already gone.
223
- 4. **noskills** — Skills brought new limits: context rot as skills accumulated,
224
- agents making wrong skill choices, manual sync across tools. noskills drops
225
- skills entirely in favor of state-driven context injection.
226
-
227
- The `eser/rules` repository
228
- ([github.com/eser/rules](https://github.com/eser/rules)) is now archived. Its
229
- ideas live on in noskills, refined under
230
- [github.com/eser/stack](https://github.com/eser/stack).
231
-
232
- This is the **Software³** philosophy: build, discover limits, evolve, share.
233
- noskills will discover its own limits too — and when it does, the next step will
234
- emerge. If you want to discover those limits together, jump on board.
235
-
236
- The name mirrors the SQL -> NoSQL shift: skills define everything upfront,
237
- noskills determines what's needed at runtime.
238
-
239
- ### The Scrum analogy
240
-
241
- If you know Agile, you already know noskills:
242
-
243
- | Agile / Scrum | noskills |
244
- | ------------------ | --------------------------------------------- |
245
- | User Story | Spec |
246
- | Increment | Spec's deliverable |
247
- | Refinement meeting | Discovery (6 questions + concerns) |
248
- | Sprint Planning | Spec draft → approval (tasks defined) |
249
- | Sprint | Execution (runs until spec is done) |
250
- | Dev team | Sub-agents (executor, verifier, test-writer) |
251
- | Scrum Master | noskills (state machine, hooks, backpressure) |
252
- | Definition of Done | Acceptance criteria |
253
- | Sprint Review | AC status report + verifier validation |
254
- | Retrospective | Debt tracking + concern reminders |
255
- | Product Owner | You (every decision is yours) |
256
-
257
- One key difference: in Scrum, a sprint is time-boxed. In noskills, execution
258
- runs until the spec is complete — it is a single-story sprint. This is why
259
- mid-execution checkpoints make no sense: a Scrum Master does not stop a sprint
260
- halfway through the only story. If the story is too big, you split it _before_
261
- the sprint starts — not during. That is exactly what noskills does at
262
- DISCOVERY_REVIEW with the split proposal.
263
-
264
- ## Philosophy — A Scrum Master for Agents
265
-
266
- I used to teach Agile. In those trainings, I'd go all the way back to the Toyota
267
- Production System to explain why we do what we do.
268
-
269
- I'd talk about WIP limits — not as a process rule, but as acknowledgment that
270
- human attention is finite. I'd explain how story points emerged from the need to
271
- break work into pieces small enough for a single person's working memory. I'd
272
- walk through why we have daily standups (people lose track), why we have
273
- Definition of Done (everyone's "done" is different), why we have acceptance
274
- criteria (without them, work drifts from intent). I'd talk about cognitive load
275
- — how the brain starts dropping things when you pile on too much context.
276
-
277
- When I first encountered context rot in AI agents, it felt familiar. The agent
278
- starts strong, makes a great plan, then gradually loses the plot — forgets
279
- instructions, gets sloppy, declares things "done" that aren't. I'd seen this in
280
- humans. The practices we built around human limitations applied directly.
281
-
282
- When I saw Ralph loops, I got excited — they felt like sprints. Each iteration
283
- starts clean: fresh context, clear goal, defined scope. Just like a sprint
284
- protects the team from mid-sprint chaos, a Ralph loop protects the agent from
285
- context accumulation. But just as sprint quality depends on what goes INTO the
286
- sprint, loop quality depends on what context the agent receives.
287
-
288
- I'd also teach Jidoka — one of the pillars of the Toyota Production System.
289
- Jidoka means "automation with a human touch." The machine runs autonomously, but
290
- when it detects an anomaly, it stops and calls a human. The human doesn't watch
291
- every step — they intervene at the right moments. Production quality comes from
292
- human and machine working together, each doing what they're best at.
293
-
294
- noskills is Jidoka for AI coding. The agent runs autonomously through tasks, but
295
- at every phase transition — discovery, spec approval, blocked decisions — it
296
- stops and the human decides. The human doesn't watch every line of code. They
297
- intervene at the moments that matter: what to build, whether the plan is right,
298
- which tradeoffs to accept. The agent handles execution; the human handles
299
- judgment.
300
-
301
- That's why I stopped using skills and built a scrum master instead:
302
-
303
- - **Ralph loops are sprints** — fresh context, clear scope, no carryover rot.
304
- - **Discovery is sprint planning** — the same questions a good PM asks before
305
- work starts.
306
- - **Backpressure is Definition of Done** — "done" requires evidence, not
307
- declaration.
308
- - **Debt tracking is the sprint board** — unfinished items don't vanish, they
309
- carry forward with increasing urgency.
310
- - **Concerns are team values** — "we care about open source" shapes every
311
- decision, just like team values shape how a team works.
312
- - **Phase transitions are Jidoka stops** — the machine pauses, the human
313
- decides, then the machine continues.
314
- - **Explicit over clever** — noskills never makes decisions silently. It always
315
- asks.
316
-
317
- The insight isn't technical. It's that the practices we spent decades developing
318
- for human teams apply directly to AI agents — because the underlying problem is
319
- the same: finite attention, drifting focus, and the need for structure to keep
320
- work on track.
321
-
322
- ## Multi-User
323
-
324
- noskills tracks who did what. Every discovery answer, phase transition, custom
325
- AC, and note is attributed to the user who made it.
213
+ noskills detects your tools, sets up hooks, and generates instruction files.
214
+ Then:
326
215
 
327
216
  ```bash
328
- noskills config set-user --name="Eser Özvataf" --email="eser@example.com"
329
- noskills config set-user --from-git # read from git config
330
- noskills config get-user # show current identity
217
+ noskills spec new "photo upload with validation" # start discovery
218
+ # Answer 6 questions. Review spec. Approve.
219
+ # Agent executes tasks with verification.
220
+ # You approve the result.
331
221
  ```
332
222
 
333
- Multiple people can contribute to the same spec:
223
+ That's it from zero to executing spec in under 5 minutes. The discovery
224
+ questions take 2-5 minutes depending on mode. The agent handles the rest.
334
225
 
335
- ```bash
336
- # Eser creates the spec and answers discovery
337
- noskills spec new upload "photo upload"
226
+ ### Autonomous mode
338
227
 
339
- # Ahmet revisits and adds mobile concerns
340
- noskills spec upload revisit "mobile concerns"
341
- noskills spec upload ac add "Mobile upload < 3s on 4G"
342
- noskills spec upload note add "Mobile users are 60% of traffic"
228
+ ```bash
229
+ noskills run --unattended --max-iterations=50
230
+ # Fresh agent per iteration, zero context rot
231
+ # Blocks logged to file resolve in the morning
343
232
  ```
344
233
 
345
- The spec tracks everything:
346
-
347
- - Discovery answers with attribution (who said what)
348
- - Phase transitions (who approved, who started execution)
349
- - Custom ACs (who added which requirement)
350
- - Notes (who provided which context)
351
-
352
- No user configured? noskills still works — attribution shows "Unknown User". Set
353
- identity anytime with `noskills config set-user`.
354
-
355
- ## Packs
356
-
357
- Installable bundles of rules, concerns, and folder-rules:
234
+ ### Live monitoring
358
235
 
359
236
  ```bash
360
- noskills pack list # show available packs
361
- noskills pack inspect typescript # preview without installing
362
- noskills pack install typescript # install rules + concerns
363
- noskills pack install security # security audit rules
364
- noskills pack uninstall typescript # remove
237
+ noskills watch # real-time dashboard in your terminal
238
+ noskills web # same dashboard in your browser
365
239
  ```
366
240
 
367
- Built-in packs: `typescript` (3 rules, 1 concern), `react` (3 rules), `security`
368
- (3 rules, 1 concern). Remote packs via `github:owner/repo#name`.
369
-
370
- ## Getting Started
241
+ The web dashboard (`noskills web`) provides the same experience as the terminal
242
+ spec reading with inline actions, Claude Code tabs, real-time updates. Product
243
+ owners and PMs can review specs, answer delegated questions, and approve from
244
+ their browser without ever opening a terminal.
371
245
 
372
- noskills supports multiple AI coding platforms. Pick yours:
246
+ ## Platform Support
373
247
 
374
- ### Claude Code
248
+ | Platform | Enforcement |
249
+ | ----------- | --------------------------------------- |
250
+ | Claude Code | Full — hooks block unauthorized actions |
251
+ | Kiro | Full — steering files + hooks |
252
+ | Codex CLI | Full — hooks + agents |
253
+ | Copilot CLI | Full — hooks + agents |
254
+ | OpenCode | Full — plugins + agents |
255
+ | Cursor | Behavioral — rules synced, no hooks |
256
+ | Windsurf | Behavioral — rules synced, no hooks |
375
257
 
376
- Open Claude Code and paste:
258
+ "Full" means the agent is mechanically prevented from breaking rules.
259
+ "Behavioral" means the agent is asked to follow rules — it usually does, but
260
+ can't be forced.
377
261
 
378
- Run `npx eser@latest noskills init` — it will scaffold your project and guide you through setup.
262
+ ## Multi-user
379
263
 
380
- That's it. The init command detects Claude Code, sets up hooks, generates
381
- `CLAUDE.md`, and presents your next options automatically.
264
+ Multiple people can work on the same spec. Discovery questions can be delegated
265
+ — "I can't answer this, ask Ahmet." Delegated items must be signed off before
266
+ the spec can be approved, like GitHub reviewers.
382
267
 
383
- ### OpenCode / OpenAI Codex CLI / GitHub Copilot CLI / Kiro
384
-
385
- Open your agent in your project and run in the terminal:
386
-
387
- Run `npx eser@latest noskills init` — it will scaffold your project and guide you through setup.
388
-
389
- noskills detects your agent, generates multi-file steering files (with `always`,
390
- `auto`, and `fileMatch` inclusion modes), installs hook configs, and creates
391
- executor/verifier agents.
392
-
393
- ### Other agents
394
-
395
- noskills generates a generic `AGENTS.md` at the project root. Any agent that
396
- reads instruction files can use it. Run `noskills sync` after adding rules to
397
- regenerate all tool files.
398
-
399
- ### Adding to an existing team project
268
+ ```bash
269
+ noskills config set-user --from-git # set your identity
270
+ noskills spec upload review # see what's delegated to you
271
+ ```
400
272
 
401
- If teammates already use noskills, the `.eser/` directory should be committed to
402
- your repo. Run `noskills init` to detect your tool and generate tool-specific
403
- files. The init command won't overwrite existing `.eser/` config — it only
404
- generates the sync output for your tool.
273
+ Every action is attributed who answered what, who approved, who added which
274
+ requirement.
405
275
 
406
- ## Quick Start
276
+ ### Getting your team on board
407
277
 
408
- noskills works with any AI coding agent. Here's how to get started in a few
409
- minutes.
278
+ One person starts: `noskills init`, create a spec, ship it. The `.eser/`
279
+ directory commits to your repo. When a teammate opens the project, they run
280
+ `noskills init` — it detects their tool (Cursor, Claude Code, Kiro, whatever)
281
+ and generates the right instruction files. Same rules, same concerns, same
282
+ quality gates — automatically.
410
283
 
411
- ### With an agent (Claude Code, Cursor, etc.)
284
+ No migration. No team-wide rollout meeting. One person starts, others join when
285
+ they see the specs landing correctly.
412
286
 
413
- ```bash
414
- eser noskills init # Scaffold .eser/, detect tools
415
- eser noskills concern add open-source # Activate concerns
416
- eser noskills spec new "photo upload" # Start spec -> DISCOVERY
417
- # Agent takes over: calls noskills next, answers questions,
418
- # builds to spec, reports progress. You approve transitions.
419
-
420
- # Or skip structure entirely:
421
- eser noskills free # FREE mode — no enforcement
422
- # Work freely, then exit when you want structure back:
423
- eser noskills free --exit # Back to IDLE
424
- ```
425
-
426
- After `init`, your AGENTS.md (or CLAUDE.md, .cursorrules, etc.) tells the agent
427
- to call `noskills next` at every step. The agent follows the JSON output. You
428
- never need to prompt-engineer the agent's behavior — noskills handles that.
287
+ ## Usage Details
429
288
 
430
289
  ### Without an agent (agentless CLI mode)
431
290
 
@@ -481,144 +340,6 @@ past broken tests. When `autoCommit: true` in `manifest.yml`, the `noskills run`
481
340
  CLI loop handles git commits between iterations — the agent never touches git.
482
341
  Git write operations are the CLI's responsibility, never the agent's.
483
342
 
484
- ### Live monitoring
485
-
486
- While an agent works, open another terminal:
487
-
488
- ```bash
489
- eser noskills watch # Live terminal dashboard
490
- eser noskills watch -o json # JSON lines per state change (pipeable)
491
- eser noskills watch -o markdown # Markdown per update
492
- ```
493
-
494
- The dashboard shows: active spec, phase, progress bar, iteration count, time
495
- since last update, outstanding debt items, files changed this iteration, concern
496
- list, and context warning. Entirely filesystem-driven — watches `.eser/.state/`
497
- for changes. Zero LLM tokens. Exits automatically when phase reaches DONE.
498
-
499
- ## How It Works
500
-
501
- noskills is a state machine. Your spec moves through phases — each phase has
502
- different rules, different questions, and different behavioral constraints for
503
- the agent. You don't need to understand the internals to use noskills, but
504
- here's how it works under the hood.
505
-
506
- ### The State Machine
507
-
508
- Every spec follows a deterministic phase flow:
509
-
510
- ```
511
- IDLE -> DISCOVERY -> DISCOVERY_REVIEW -> SPEC_DRAFT -> SPEC_APPROVED -> EXECUTING <-> BLOCKED
512
- ^ \ |
513
- | <-> FREE |
514
- +--------------------------------- DONE <---------------------------------+
515
- ```
516
-
517
- | Phase | What happens |
518
- | -------------------- | ---------------------------------------------------------------------- |
519
- | **IDLE** | No active spec. Start one with `noskills spec new "..."` |
520
- | **FREE** | No enforcement. Work freely. Agent has no restrictions from noskills |
521
- | **DISCOVERY** | 6 blended questions probe product, engineering, and QA simultaneously |
522
- | **DISCOVERY_REVIEW** | User reviews and confirms all discovery answers before spec generation |
523
- | **SPEC_DRAFT** | Spec generated from discovery answers. Human reviews |
524
- | **SPEC_APPROVED** | Spec approved, waiting to start. A deliberate "ready but not yet" gate |
525
- | **EXECUTING** | Agent works through the spec. Reports progress each iteration |
526
- | **BLOCKED** | Agent hit a decision it can't make alone. Human resolves |
527
- | **DONE** | Spec complete. Summary with iteration count and decisions |
528
-
529
- ### Phase Transition Protocol
530
-
531
- Every phase transition follows the same structured cycle:
532
-
533
- ```
534
- Human input -> Agent A evaluates -> Agent B validates (optional) -> Human approves -> Next phase
535
- ```
536
-
537
- This is universal — DISCOVERY -> SPEC_DRAFT, SPEC_DRAFT -> SPEC_APPROVED,
538
- BLOCKED -> EXECUTING, every transition. The human always has final say.
539
-
540
- Agent B validation is opt-in per command (`noskills next --validate`) or as a
541
- project default in `manifest.yml`. When validation is active, noskills spawns
542
- Agent B via the Agent Bridge with completely isolated context — Agent B never
543
- sees Agent A's conversation history. This is real generator/judge separation,
544
- not role-played.
545
-
546
- ### The JSON Output
547
-
548
- Every `noskills next` call returns a structured JSON payload:
549
-
550
- ```jsonc
551
- {
552
- "phase": "EXECUTING",
553
- "instruction": "Execute the current task. When done, report progress.",
554
- "task": {
555
- "id": "task-2",
556
- "title": "Add photo upload endpoint with validation",
557
- "totalTasks": 5,
558
- "completedTasks": 1
559
- },
560
- "meta": {
561
- "protocol": "Run `eser noskills next --answer=\"...\"` to submit results and advance",
562
- "spec": "photo-upload",
563
- "branch": null,
564
- "iteration": 3,
565
- "lastProgress": "implemented auth module",
566
- "activeConcerns": ["open-source", "beautiful-product"],
567
- "resumeHint": "Executing \"photo-upload\", iteration 3. Last progress: implemented auth module. Continue with the current task."
568
- },
569
- "behavioral": {
570
- "rules": [
571
- "NEVER run git write commands. Git is read-only for agents.",
572
- "Do not explore the codebase beyond what the current task requires.",
573
- "Do not refactor, improve, or modify code outside this task's scope.",
574
- "Complete the task, then report progress. The user handles git."
575
- ],
576
- "tone": "Direct. Orchestrate immediately — spawn sub-agents."
577
- },
578
- "context": {
579
- "rules": ["Use Deno for all TypeScript"],
580
- "concernReminders": [
581
- "open-source: Endpoint should be documented in API docs",
582
- "beautiful-product: Loading and error states must be designed, not placeholder"
583
- ]
584
- },
585
- "transition": {
586
- "onComplete": "eser noskills next --answer=\"...\"",
587
- "onBlocked": "eser noskills block \"reason\"",
588
- "iteration": 3
589
- }
590
- }
591
- ```
592
-
593
- The `meta.resumeHint` is designed for cold starts — a fresh agent (or human)
594
- reading the output for the first time can orient themselves without any prior
595
- context. On stale sessions (>5 min since last call), a `protocolGuide` block
596
- appears explaining what noskills is and how phases work.
597
-
598
- When concerns conflict, the output includes a tension block:
599
-
600
- ```jsonc
601
- {
602
- "phase": "EXECUTING",
603
- "concernTensions": [{
604
- "between": ["move-fast", "compliance"],
605
- "issue": "Skipping audit log saves ~2h but violates compliance concern."
606
- }]
607
- }
608
- ```
609
-
610
- Tensions require human resolution — noskills never auto-resolves them.
611
-
612
- ### Output Formats
613
-
614
- ```bash
615
- noskills next # JSON (default, for agents and pipes)
616
- noskills next -o json # Explicit JSON
617
- noskills next -o markdown # Human-readable with headings and checklists
618
- noskills next -o text # Plain text, no formatting
619
- noskills status -o json # Structured status for scripts
620
- ```
621
-
622
343
  ### Behavioral Guardrails
623
344
 
624
345
  Every `noskills next` output includes a `behavioral` block with phase-specific
@@ -643,31 +364,6 @@ When the agent's iteration count exceeds `maxIterationsBeforeRestart` (default
643
364
  15), an `urgency` message warns that context is degrading and recommends a fresh
644
365
  session.
645
366
 
646
- ### Platform Support
647
-
648
- | Platform | Rules | Hooks | Agents | MCP | Enforcement |
649
- | ----------- | -------------- | ----------- | ----------- | --- | --------------- |
650
- | Claude Code | CLAUDE.md | full | Task tool | yes | Mechanical |
651
- | Kiro | steering/ | Run Command | delegation | yes | Mechanical |
652
- | Codex CLI | AGENTS.md | full | spawn_agent | yes | Mechanical |
653
- | Copilot CLI | AGENTS.md | full | /fleet | yes | Mechanical |
654
- | OpenCode | AGENTS.md | plugins | delegation | yes | Mechanical |
655
- | Cursor | .cursorrules | none | none | yes | Behavioral only |
656
- | Windsurf | .windsurfrules | none | none | yes | Behavioral only |
657
-
658
- Platforms with **mechanical enforcement** use hooks to prevent unauthorized file
659
- edits, block git write commands, and enforce phase transitions. Platforms with
660
- **behavioral-only enforcement** rely on rules and instructions — the agent is
661
- asked to follow the protocol but cannot be mechanically prevented from breaking
662
- it.
663
-
664
- **Convention discovery:** When the agent identifies a recurring pattern,
665
- receives a correction from the user, or discovers a preference during work, the
666
- behavioral rules instruct it to ask: _"Should this be a permanent rule for this
667
- project, or just for this task?"_ If permanent, the agent runs
668
- `noskills rule add`. If just this task, it notes and moves on. The agent never
669
- writes to `.eser/rules/` directly — noskills handles file creation and sync.
670
-
671
367
  ### Concerns — The Project's DNA
672
368
 
673
369
  Concerns define what your project IS. They stack on top of each other and affect
@@ -695,60 +391,6 @@ Concerns inject:
695
391
  When concerns conflict (e.g., move-fast + compliance), noskills surfaces the
696
392
  tension to the human rather than resolving it silently.
697
393
 
698
- ### Decision Lifecycle
699
-
700
- When an agent encounters a decision during any phase:
701
-
702
- 1. Agent reports it needs a decision (via `noskills block` or within `next`
703
- output).
704
- 2. noskills routes the decision to the human.
705
- 3. Human answers.
706
- 4. noskills asks: _"Should this be a permanent rule for this project, or just
707
- for this spec?"_
708
- 5. If permanent -> `noskills rule add` is called internally -> writes to
709
- `.eser/rules/` -> triggers sync.
710
- 6. If just this spec -> recorded in the spec's decisions table only.
711
-
712
- This creates an organic growth loop: as you build specs, your rule set evolves.
713
- New team members and AI agents automatically inherit accumulated decisions.
714
- One-time decisions stay scoped to their spec — they never leak into other specs.
715
-
716
- The spec file tracks decisions:
717
-
718
- ```markdown
719
- ## Decisions
720
-
721
- | # | Decision | Choice | Type |
722
- | - | ------------------ | ------------- | --------------- |
723
- | 1 | Validation library | Zod | rule (promoted) |
724
- | 2 | Image API provider | OpenAI Vision | one-time |
725
- ```
726
-
727
- ### Verification Backpressure
728
-
729
- When the agent reports a task complete, noskills doesn't take its word for it.
730
-
731
- 1. **Automated verification** runs first (configurable via `verifyCommand` in
732
- manifest, e.g., `"deno test"`). If tests fail, the task is rejected and the
733
- failure output is returned as the next instruction.
734
-
735
- 2. **Status report** requested against acceptance criteria — items from the spec
736
- plus concern-injected criteria (e.g., "All UI states designed" from
737
- beautiful-product). The agent checks off what's done and reports what
738
- remains.
739
-
740
- 3. **Debt carry-forward** — remaining items persist across iterations as debt.
741
- Every subsequent `noskills next` output includes the debt with "Address these
742
- BEFORE starting new work." Debt is never silently removed — only an explicit
743
- status report listing items as completed clears them. If debt items remain
744
- unaddressed for 3+ iterations, noskills escalates — the debt block gains an
745
- urgency field warning that these items have been outstanding for N iterations
746
- and must be addressed before any new work.
747
-
748
- 4. **Context clearing** — when debt is zero and verification passes, noskills
749
- recommends a `/clear` for fresh context on the next task. The sub-agent
750
- pattern handles context isolation naturally, so this is advisory only.
751
-
752
394
  ### Scoped Folder Rules
753
395
 
754
396
  In monorepos, different packages have different constraints. Drop a
@@ -776,376 +418,189 @@ like CSS specificity. A rule at `pkg/` applies to all files under `pkg/`, while
776
418
  a rule at `pkg/@eser/streams/` applies only to that package. Zero token cost —
777
419
  derived from filesystem, not LLM.
778
420
 
779
- ### Discovery Questions
780
-
781
- Six questions, each probing product + engineering + QA at once:
782
-
783
- 1. **What does the user do today without this feature?**
784
- 2. **Describe the 1-star and 10-star versions.**
785
- 3. **Does this change involve an irreversible decision?**
786
- 4. **Does this change affect existing users' behavior?**
787
- 5. **How do you verify this works correctly?**
788
- 6. **What should this feature NOT do?**
789
-
790
- Active concerns inject sub-questions. For example, with `open-source` active,
791
- question 1 also asks: _"Is this workaround common in the community?"_
792
-
793
- For larger specs, noskills may propose splitting the work into separate specs at
794
- the end of discovery — for example, separating a bug fix from a feature
795
- addition. You always decide: keep as one spec or split. noskills never splits on
796
- its own.
797
-
798
- ### Spec Classification
799
-
800
- After discovery answers are submitted, noskills asks the user to classify the
801
- spec along five boolean axes:
802
-
803
- | Flag | What it controls |
804
- | ---------------------- | ------------------------------------------------------- |
805
- | `involvesWebUI` | Web/Mobile UI sections from beautiful-product concern |
806
- | `involvesCLI` | CLI/Terminal UI loading states |
807
- | `involvesPublicAPI` | API documentation sections from open-source concern |
808
- | `involvesMigration` | Migration checklist sections from compliance/long-lived |
809
- | `involvesDataHandling` | Data safety sections from compliance concern |
810
-
811
- Classification determines which concern sections appear in the generated spec.
812
- Irrelevant sections are skipped entirely — a backend API change won't get UI
813
- state checklists, and a CSS tweak won't get migration warnings. This replaces
814
- keyword-based guessing with explicit user input.
815
-
816
- The classification is submitted as JSON via `noskills next`:
817
-
818
- ```bash
819
- noskills next --answer='{"involvesWebUI":true,"involvesCLI":false,"involvesPublicAPI":false,"involvesMigration":false,"involvesDataHandling":false}'
820
- ```
821
-
822
- ### Hooks — Zero-Token Bookkeeping
823
-
824
- noskills installs hooks for Claude Code (`.claude/settings.json`), Kiro
825
- (`.kiro/settings/hooks.json`), OpenCode (`.opencode/plugins/noskills.ts`), Codex
826
- CLI (`.codex/hooks.json`), and Copilot CLI (`.github/hooks/noskills.json`) that
827
- handle state bookkeeping without spending LLM tokens. Claude Code hooks:
828
-
829
- | Hook | Event | What it does |
830
- | ------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
831
- | **pre-tool-use** | PreToolUse | Blocks file edits outside EXECUTING phase. Blocks git write commands. |
832
- | **stop** | Stop | Increments iteration counter, snapshots `git diff` into state, checks restart threshold. The Ralph loop's heartbeat. |
833
- | **post-file-write** | PostToolUse | Logs modified file paths to `.eser/.state/files-changed.jsonl` |
834
- | **post-bash** | PostToolUse | Logs noskills CLI invocations for observability |
835
- | **session-start** | SessionStart | Runs `noskills next` at session start so the agent is immediately oriented. No CLAUDE.md reading needed — the hook delivers the current instruction. |
836
-
837
- Kiro hooks map the same behavioral guarantees to Kiro-native triggers (Pre Tool
838
- Use, Post Tool Use, Agent Stop, Prompt Submit) using Run Command actions.
839
- OpenCode hooks use the plugin system (`.opencode/plugins/`) with event handlers
840
- for session.created, tool.execute.before/after, and session.deleted. Codex CLI
841
- hooks use `.codex/hooks.json` with PascalCase events (SessionStart, PreToolUse,
842
- PostToolUse, Stop). Copilot CLI hooks use `.github/hooks/noskills.json` with a
843
- versioned schema (`{"version": 1, "hooks": {...}}`) and array-format commands.
844
-
845
- Hooks are CLI subcommands (`noskills invoke-hook <name>`), not generated script
846
- files. This avoids ESM/CJS issues — the same Deno entry point handles
847
- everything.
848
-
849
- The agent is completely unaware hooks exist. Hooks derive progress from
850
- filesystem and git state — the agent doesn't waste tokens summarizing what it
851
- did.
852
-
853
- ### Tool Sync — One Source of Truth
854
-
855
- noskills generates instruction files for every AI tool your team uses:
856
-
857
- ```
858
- .eser/ (single source of truth)
859
- +-- noskills sync
860
- | Claude Code
861
- |-- -> CLAUDE.md (instructions)
862
- |-- -> AGENTS.md (shared: Codex / Copilot / OpenCode)
863
- |-- -> .claude/settings.json (hooks)
864
- |-- -> .claude/agents/ (agents)
865
- | Kiro
866
- |-- -> .kiro/steering/*.md (steering files)
867
- |-- -> .kiro/settings/hooks.json (hooks)
868
- |-- -> .kiro/settings/mcp.json (MCP)
869
- |-- -> .kiro/agents/*.json (agents)
870
- |-- -> .kiro/specs/ (spec projection)
871
- | Codex CLI
872
- |-- -> .codex/hooks.json (hooks)
873
- |-- -> .codex/agents/*.toml (agents)
874
- |-- -> .codex/config.toml (MCP)
875
- | Copilot CLI
876
- |-- -> .github/hooks/noskills.json (hooks)
877
- |-- -> .github/agents/*.agent.md (agents)
878
- |-- -> .github/copilot-instructions.md (IDE instructions)
879
- |-- -> .copilot/mcp.json (MCP)
880
- | OpenCode
881
- |-- -> .opencode/plugins/noskills.ts (hooks)
882
- |-- -> .opencode/agents/*.md (agents)
883
- |-- -> .opencode/skills/*.md (spec projection)
884
- |-- -> opencode.json (MCP)
885
- | Cursor / Windsurf / Copilot IDE
886
- |-- -> .cursorrules (Cursor)
887
- +-- -> .windsurfrules (Windsurf)
888
- ```
889
-
890
- Write your rules once in `.eser/rules/`, run `noskills sync`, and every tool
891
- gets the same instructions in its native format.
892
-
893
- Generated AGENTS.md includes:
894
-
895
- - Protocol instructions with 5 concrete trigger points
896
- - Git read-only section (unless `allowGit: true`)
897
- - Active rules
898
- - JSON output explanation
899
-
900
- ### Spec Management
901
-
902
- ```bash
903
- # Create with auto-generated slug
904
- noskills spec new "photo upload feature"
905
- # -> .eser/specs/photo-upload-feature/spec.md
906
-
907
- # Create with explicit name
908
- noskills spec new --name=SPC0001 "photo upload feature"
909
- # -> .eser/specs/SPC0001/spec.md
910
-
911
- # List all specs with status
912
- noskills spec list
913
- # . photo-upload-feature EXECUTING iteration 3
914
- # fix-login-bug SPEC_DRAFT
915
- # SPC0001 DONE
916
-
917
- # Switch between specs (preserves state)
918
- noskills spec switch fix-login-bug
919
- # Active spec: fix-login-bug (SPEC_DRAFT)
920
-
921
- # JSON output for scripts
922
- noskills spec list -o json
923
- ```
924
-
925
- Multiple specs can exist at different stages. Switching away from an EXECUTING
926
- spec preserves everything — iteration, debt, verification result, progress.
927
- Switching back resumes exactly where it left off.
928
-
929
- > **Future:** `spec new --from-plan <file>` — import an existing plan document
930
- > (e.g., from Claude Code's plan mode) as the basis for discovery, pre-filling
931
- > some answers. Not yet implemented.
932
-
933
- ## Common Workflows
421
+ ## How noskills differs
934
422
 
935
- **"I have a bug report from a customer"**
423
+ | | Sequential Thinking | gstack | Superpowers | agent-skills | Skills / Rules | Ralph Loops | noskills |
424
+ | --------------------------- | ------------------------------------ | -------------------------------------------------------------------- | --------------------------------------------------------------- | ---------------------------------------------------------------- | --------------------------------- | ---------------------------------------- | ------------------------------------------ |
425
+ | What it does | Structures agent's internal thinking | Role-based slash commands (CEO, Eng, QA) | Step-by-step execution playbooks | Static workflow patterns for agents | Loads rules into context | Resets session, keeps state in files | Manages workflow via state machine |
426
+ | Metaphor | "Think out loud" | "Virtual team" | "Instruction manual" | "Reference book" | "Law book" | "Clean desk every turn" | "Scrum Master" |
427
+ | User role | None — agent self-talks | Chooses which role to invoke | Configures playbooks | Loads patterns into context | Writes rules, hopes agent follows | Manages context manually | Active decision-maker at every gate |
428
+ | Enforcement | None | None — behavioral | None — behavioral | None — behavioral | None — behavioral | Context reset only | Mechanical (hooks block actions) |
429
+ | State tracking | Thought history (in-memory) | Learnings (cross-session) | None | None | None | File-based (manual) | Full state machine, per-spec |
430
+ | File control | None | None | None | None | None | None | Phase-based edit control |
431
+ | Sub-agents | None | None (single agent, multiple roles) | None | None | None | None | Executor / verifier / test-writer pipeline |
432
+ | Discovery | None | /office-hours (similar concept) | Brainstorming skill (similar) | None | None | None | 6 structured questions + concerns |
433
+ | Still needed with noskills? | Different layer — helps agents think | Unnecessary — noskills pushes role-specific rules at the right phase | Unnecessary — noskills delivers the right playbook mechanically | Unnecessary — noskills injects patterns as phase-aware reminders | Replaced by noskills | Automated by noskills sub-agent pipeline | — |
434
+
435
+ The pull model asks agents to pick the right skill at the right time. The push
436
+ model delivers exactly what's needed — no picking, no missing, no waste.
437
+
438
+ Every tool above solves a real problem. But they all share the same limitation:
439
+ they load instructions and hope the agent follows them. noskills doesn't hope —
440
+ it enforces. Hooks block the operation, not rules. The agent can't skip
441
+ discovery, can't bypass verification, can't declare done without evidence.
442
+
443
+ You don't need skill packs. You need a state machine.
444
+
445
+ Another distinction is that noskills owns the workflow — who does what, when,
446
+ and whether the result was verified — while the others own the thinking or the
447
+ persona.
448
+
449
+ **noskills vs gstack:** gstack is a collection of behavioral skills — each skill
450
+ is a 2000+ line prompt that tells the agent how to behave. Office hours asks 6
451
+ questions (noskills: discovery). CEO review selects a scope mode (noskills:
452
+ discovery modes). Eng review checks architecture and tests (noskills: verifier
453
+ pipeline + mandatory ACs). The key difference: gstack skills are behavioral
454
+ instructions the agent may or may not follow. noskills pushes exactly the right
455
+ instruction at the right time via a state machine, and enforces compliance via
456
+ hooks. gstack's /office-hours produces a design doc. noskills' discovery
457
+ produces a spec with tasks, ACs, and a state machine that tracks execution.
458
+ gstack solves real problems — but with 2000-line prompts the agent may or may
459
+ not follow. noskills solves the same problems with 10 lines at the right moment,
460
+ enforced by hooks.
461
+
462
+ **noskills vs Superpowers:** Superpowers provides detailed execution playbooks —
463
+ step-by-step instructions for brainstorming, dispatching, executing, and
464
+ verifying. Each skill tells the agent exactly how to do the work, down to
465
+ specific checklists and verification tables. The key difference: Superpowers
466
+ defines the "how" exhaustively and hopes the agent follows all of it. noskills
467
+ defines the "what" and "when" minimally — the agent gets only the current
468
+ phase's constraints, and hooks enforce compliance. Superpowers is a detailed
469
+ instruction manual. noskills is a state machine that won't let you skip
470
+ chapters. You don't need the manual when the machine enforces the process.
471
+
472
+ **noskills vs agent-skills:** agent-skills is a collection of 20 workflow
473
+ patterns — anti-rationalization prompts, verification checklists, red flag
474
+ detectors — designed to be loaded into agent context at the start of a session.
475
+ The key difference: agent-skills loads everything upfront and trusts the agent
476
+ to apply the right pattern at the right time. noskills delivers specific
477
+ reminders at specific phases — you don't see the verification checklist during
478
+ discovery, and you don't see the brainstorming prompt during execution.
479
+ agent-skills is a reference book the agent carries everywhere. noskills is a
480
+ guide that shows you only the page you need right now — and won't let you turn
481
+ to the wrong one.
936
482
 
937
- ```bash
938
- eser noskills spec new "Fix: users can't upload files over 10MB"
939
- # Discovery mode: Ship fast (skip expansions, minimal questions)
940
- # 3 tasks generated: reproduce, fix, test
941
- # Agent implements in ~8 minutes with verification
942
- ```
943
-
944
- **"I need to add a major feature"**
483
+ ## The Mental Model
945
484
 
946
- ```bash
947
- eser noskills spec new "Add real-time collaboration to the editor"
948
- # Discovery mode: Explore scope (expansion proposals, dream state table)
949
- # 12 tasks generated with architectural decisions
950
- # Agent works through tasks over multiple sessions
951
- # Debt tracking ensures nothing is forgotten between sessions
952
485
  ```
953
-
954
- **"I have meeting notes and need to turn them into work"**
955
-
956
- ```bash
957
- eser noskills spec new "From product meeting: need analytics dashboard,
958
- CEO wants daily active users, retention curves, revenue per cohort.
959
- Mobile must work. Launch by end of Q2."
960
- # noskills accepts any input format — meeting notes, kanban cards, emails
961
- # Discovery challenges assumptions: "Is mobile-first or desktop-first?"
962
- # Spec generated with proper tasks, not meeting note fragments
486
+ .cursorrules -> .cursor/rules/*.mdc -> eser/rules + skills -> noskills
487
+ (1 file) (modular, 1 tool) (portable, curated) (state-driven)
963
488
  ```
964
489
 
965
- **"I want the agent to work autonomously while I sleep"**
490
+ Each generation solved one bottleneck and discovered the next:
966
491
 
967
- ```bash
968
- eser noskills run --unattended --max-iterations=50
969
- # Fresh agent per iteration, zero context rot
970
- # Blocks logged to file resolve in the morning
971
- # Git commits handled by CLI, not the agent
972
- ```
492
+ 1. `**.cursorrules**` — single file, single tool. Couldn't split, couldn't
493
+ scale, couldn't travel across tools.
494
+ 2. `**.cursor/rules/*.mdc**` modular, but still locked to Cursor.
495
+ 3. `**eser/rules` + `eser-rules-manager**`created as a portable,
496
+ tool-agnostic instruction system. This **predated** Anthropic's Skills spec.
497
+ When Skills arrived, eser/rules was adapted into skills format — validating
498
+ the ecosystem was heading where eser/rules had already gone.
499
+ 4. **noskills** — Skills hit a wall: context rot as they accumulated, agents
500
+ picking wrong skills, manual sync across tools. The pull model failed.
501
+ noskills drops skills entirely — state-driven push replaces context-heavy
502
+ pull.
973
503
 
974
- ## CLI Reference
504
+ The `eser/rules` repository
505
+ ([github.com/eser/rules](https://github.com/eser/rules)) is now archived. Its
506
+ ideas live on in noskills, refined under
507
+ [github.com/eser/stack](https://github.com/eser/stack).
975
508
 
976
- ```bash
977
- # Via eser CLI
978
- eser noskills <command>
509
+ This is the **Software³** philosophy: build, discover limits, evolve, share.
510
+ noskills will discover its own limits too — and when it does, the next step will
511
+ emerge. If you want to discover those limits together, jump on board.
979
512
 
980
- # Standalone
981
- deno run --allow-all jsr:@eser/noskills <command>
513
+ The name mirrors the SQL -> NoSQL shift: skills define everything upfront,
514
+ noskills determines what's needed at runtime.
982
515
 
983
- # Alias
984
- eser nos <command>
985
- ```
516
+ ### The Scrum analogy
986
517
 
987
- ### Commands
988
-
989
- | Command | Description |
990
- | ------------------------------------- | ------------------------------------------------------------------ |
991
- | `init` | Scaffold `.eser/`, detect project traits, install hooks |
992
- | `status [-o format]` | Show current phase, spec name, progress, debt |
993
- | `spec new <name> "description"` | Start a new spec, enter DISCOVERY |
994
- | `spec list [-o format]` | List all specs with phase info |
995
- | `spec <name> next [-o format]` | Get instruction for current phase |
996
- | `spec <name> next --answer="..."` | Submit answer and advance state |
997
- | `spec <name> approve` | Approve spec draft -> SPEC_APPROVED |
998
- | `spec <name> done` | Complete execution -> DONE |
999
- | `spec <name> block "reason"` | Mark execution as blocked |
1000
- | `spec <name> reset` | Reset current spec to IDLE |
1001
- | `spec <name> revisit "reason"` | Return to DISCOVERY from EXECUTING |
1002
- | `spec <name> split --into x --into y` | Split spec into sub-specs |
1003
- | `run [--spec=name] [--unattended]` | Autonomous execution loop (Ralph loop) |
1004
- | `watch [-o format]` | Live dashboard monitoring agent progress |
1005
- | `concern add/remove/list` | Manage active concerns |
1006
- | `rule add/list/promote` | Manage permanent rules |
1007
- | `sync` | Regenerate tool-specific instruction files + hooks |
1008
- | `purge [--force]` | Remove all noskills content (specs, rules, concerns, hooks, state) |
1009
-
1010
- All spec commands use the `spec <name> <command>` positional format. The spec
1011
- name always comes before the subcommand. Use `spec list` to see available specs.
1012
-
1013
- ### Output Formats
1014
-
1015
- All commands that produce output support `-o` / `--output`:
1016
-
1017
- | Format | Flag | Use case |
1018
- | -------- | ------------------- | ---------------------- |
1019
- | JSON | `-o json` (default) | Agents, pipes, scripts |
1020
- | Markdown | `-o markdown` | Human reading |
1021
- | Text | `-o text` | Simple terminal output |
1022
-
1023
- ## Configuration
1024
-
1025
- noskills config lives inside `.eser/manifest.yml` as a `noskills:` section:
1026
-
1027
- ```yaml
1028
- noskills:
1029
- command: "eser noskills" # auto-detected during init
1030
- concerns:
1031
- - open-source
1032
- - beautiful-product
1033
- tools:
1034
- - claude-code
1035
- - cursor
1036
- providers:
1037
- - anthropic
1038
- project:
1039
- languages: [typescript]
1040
- frameworks: [react]
1041
- ci: [github-actions]
1042
- testRunner: deno
1043
- maxIterationsBeforeRestart: 15
1044
- verifyCommand: "deno test" # runs before accepting task completion
1045
- allowGit: false # true = agents can run git write commands
1046
- ```
518
+ If you know Agile, you already know noskills:
1047
519
 
1048
- During `init`, noskills detects how it was invoked (via `@eser/standards`
1049
- runtime) and stores it as `command`. All generated output — `AGENTS.md`
1050
- instructions, hook remediation messages, behavioral rules, transition hints —
1051
- uses this prefix. Users who invoke via `deno run`, `npx`, homebrew, or global
1052
- install all get correct command references.
520
+ | Agile / Scrum | noskills |
521
+ | ------------------ | --------------------------------------------- |
522
+ | User Story | Spec |
523
+ | Increment | Spec's deliverable |
524
+ | Refinement meeting | Discovery (6 questions + concerns) |
525
+ | Sprint Planning | Spec draft → approval (tasks defined) |
526
+ | Sprint | Execution (runs until spec is done) |
527
+ | Dev team | Sub-agents (executor, verifier, test-writer) |
528
+ | Scrum Master | noskills (state machine, hooks, backpressure) |
529
+ | Definition of Done | Acceptance criteria |
530
+ | Sprint Review | AC status report + verifier validation |
531
+ | Retrospective | Debt tracking + concern reminders |
532
+ | Product Owner | You (every decision is yours) |
1053
533
 
1054
- **Tools vs Providers:**
534
+ One key difference: in Scrum, a sprint is time-boxed. In noskills, execution
535
+ runs until the spec is complete — it is a single-story sprint. This is why
536
+ mid-execution checkpoints make no sense: a Scrum Master does not stop a sprint
537
+ halfway through the only story. If the story is too big, you split it _before_
538
+ the sprint starts — not during. That is exactly what noskills does at
539
+ DISCOVERY_REVIEW with the split proposal.
1055
540
 
1056
- - **Tools** = the IDE or agent environment (`claude-code`, `cursor`, `kiro`,
1057
- `copilot`, `windsurf`, `opencode`, `codex`, `copilot-cli`). Affects which sync
1058
- output files are generated.
1059
- - **Providers** = AI model access methods (`anthropic`, `openai`, `ollama`,
1060
- `claude-code` CLI). Used by the Agent Bridge for validation and
1061
- `noskills run`.
541
+ ## Philosophy A Scrum Master for Agents
1062
542
 
1063
- ## Directory Structure
543
+ I used to teach Agile. In those trainings, I'd go all the way back to the Toyota
544
+ Production System to explain why we do what we do.
1064
545
 
1065
- ```
1066
- .eser/ # unified toolchain directory
1067
- |-- manifest.yml # workflows, scripts, AND noskills config
1068
- |-- concerns/ # Concern definitions (built-in + custom)
1069
- | |-- 001-open-source.json
1070
- | |-- 002-beautiful-product.json
1071
- | +-- ... # Numeric prefixes control ordering
1072
- |-- rules/ # Permanent rules (*.md, *.txt)
1073
- |-- specs/
1074
- | +-- photo-upload/
1075
- | +-- spec.md # Generated spec from discovery
1076
- |-- workflows/
1077
- |-- .state/ # git-ignored (runtime only)
1078
- | |-- state.json # Current phase, answers, progress, active spec
1079
- | |-- specs/ # Per-spec state snapshots
1080
- | | |-- photo-upload.json
1081
- | | +-- fix-login-bug.json
1082
- | |-- files-changed.jsonl # File modification log (from hooks)
1083
- | +-- noskills-calls.jsonl # CLI invocation log (from hooks)
1084
- +-- .gitignore # Excludes .state/
1085
- ```
546
+ I'd talk about WIP limits — not as a process rule, but as acknowledgment that
547
+ human attention is finite. I'd explain how story points emerged from the need to
548
+ break work into pieces small enough for a single person's working memory. I'd
549
+ walk through why we have daily standups (people lose track), why we have
550
+ Definition of Done (everyone's "done" is different), why we have acceptance
551
+ criteria (without them, work drifts from intent). I'd talk about cognitive load
552
+ how the brain starts dropping things when you pile on too much context.
1086
553
 
1087
- Configuration and specs are git-tracked for PR review. Runtime state is
1088
- gitignored each agent session reads fresh state from the filesystem.
554
+ When I first encountered context rot in AI agents, it felt familiar. The agent
555
+ starts strong, makes a great plan, then gradually loses the plot — forgets
556
+ instructions, gets sloppy, declares things "done" that aren't. I'd seen this in
557
+ humans. The practices we built around human limitations applied directly.
1089
558
 
1090
- ## Library API
559
+ When I saw Ralph loops, I got excited — they felt like sprints. Each iteration
560
+ starts clean: fresh context, clear goal, defined scope. Just like a sprint
561
+ protects the team from mid-sprint chaos, a Ralph loop protects the agent from
562
+ context accumulation. But just as sprint quality depends on what goes INTO the
563
+ sprint, loop quality depends on what context the agent receives.
1091
564
 
1092
- ```typescript
1093
- import * as noskills from "@eser/noskills/mod";
565
+ I'd also teach Jidoka — one of the pillars of the Toyota Production System.
566
+ Jidoka means "automation with a human touch." The machine runs autonomously, but
567
+ when it detects an anomaly, it stops and calls a human. The human doesn't watch
568
+ every step — they intervene at the right moments. Production quality comes from
569
+ human and machine working together, each doing what they're best at.
1094
570
 
1095
- // State machine
1096
- const state = noskills.machine.startSpec(
1097
- noskills.createInitialState(),
1098
- "my-feature",
1099
- "spec/my-feature",
1100
- );
571
+ noskills is Jidoka for AI coding. The agent runs autonomously through tasks, but
572
+ at every phase transition — discovery, spec approval, blocked decisions — it
573
+ stops and the human decides. The human doesn't watch every line of code. They
574
+ intervene at the moments that matter: what to build, whether the plan is right,
575
+ which tradeoffs to accept. The agent handles execution; the human handles
576
+ judgment.
1101
577
 
1102
- // Questions with concern extras
1103
- const qs = noskills.questions.getQuestionsWithExtras(activeConcerns);
578
+ That's why I stopped using skills and built a scrum master instead:
1104
579
 
1105
- // Compile instruction for current phase
1106
- const output = noskills.compiler.compile(state, activeConcerns, rules, config);
580
+ - **Ralph loops are sprints** — fresh context, clear scope, no carryover rot.
581
+ - **Discovery is sprint planning** the same questions a good PM asks before
582
+ work starts.
583
+ - **Backpressure is Definition of Done** — "done" requires evidence, not
584
+ declaration.
585
+ - **Debt tracking is the sprint board** — unfinished items don't vanish, they
586
+ carry forward with increasing urgency.
587
+ - **Concerns are team values** — "we care about open source" shapes every
588
+ decision, just like team values shape how a team works.
589
+ - **Phase transitions are Jidoka stops** — the machine pauses, the human
590
+ decides, then the machine continues.
591
+ - **Explicit over clever** — noskills never makes decisions silently. It always
592
+ asks.
1107
593
 
1108
- // Concern tension detection
1109
- const tensions = noskills.concerns.detectTensions(activeConcerns);
594
+ The insight isn't technical. It's that the practices we spent decades developing
595
+ for human teams apply directly to AI agents — because the underlying problem is
596
+ the same: finite attention, drifting focus, and the need for structure to keep
597
+ work on track.
1110
598
 
1111
- // Output formatting
1112
- const text = noskills.formatter.format(output, "markdown");
1113
- ```
599
+ ## Technical Reference
1114
600
 
1115
- ## Agent Bridge
1116
-
1117
- noskills can call AI agents for validation via a fallback chain:
1118
-
1119
- 1. **@eser/ai** — Programmatic API call (cross-model, configurable)
1120
- 2. **Claude CLI** — Spawns `claude -p "..."` locally (zero additional cost)
1121
- 3. **Manual** — Returns null, caller handles human review
1122
-
1123
- ## Init Detection
1124
-
1125
- `noskills init` auto-detects:
1126
-
1127
- - **Languages** — TypeScript, Go, Rust, Python (from config files)
1128
- - **Frameworks** — React, Vue, Svelte, Next.js, Express, Hono (from
1129
- package.json)
1130
- - **CI** — GitHub Actions, GitLab CI, Jenkins, CircleCI
1131
- - **Test runner** — Deno, Vitest, Jest, Playwright
1132
- - **Coding tools:**
1133
- - **Claude Code** — `CLAUDE.md`, `.claude/` directory
1134
- - **Kiro** — `.kiro/` directory
1135
- - **Codex CLI** — `.codex/` directory, `.codex/config.toml`
1136
- - **Copilot CLI** — `.copilot/` directory, `.github/hooks/`
1137
- - **Copilot IDE** — `.github/copilot-instructions.md`
1138
- - **OpenCode** — `.opencode/` directory, `opencode.json`
1139
- - **Cursor** — `.cursorrules`, `.cursor/` directory
1140
- - **Windsurf** — `.windsurfrules`
1141
- - **Kilo Code** — `.kilo/` directory _(detection only — full adapter planned)_
1142
- - **Cline** — `.clinerules` file _(detection only — full adapter planned)_
1143
- - **Roo Code** — `.roo/` directory, `.roomodes` file _(detection only — full
1144
- adapter planned)_
1145
-
1146
- Detected coding tools are auto-synced on init, including hook installation for
1147
- tools that support it. Invocation method is auto-detected and stored in
1148
- `manifest.yml` as `noskills.command` — all output references use this prefix.
601
+ State machine internals, JSON output format, hook implementation, CLI reference,
602
+ directory structure, configuration, and library API — see
603
+ **[README-HOW.md](./README-HOW.md)**.
1149
604
 
1150
605
  ## License
1151
606