duaer-spec 0.1.0 → 0.1.1
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/.cursor/rules/duaer-spec.mdc +3 -2
- package/ADOPT.md +14 -13
- package/AGENTS.md +4 -2
- package/CHANGELOG.md +10 -0
- package/DUADER.md +10 -7
- package/README.md +33 -19
- package/bin/duaer.mjs +20 -14
- package/docs/agent/README.md +2 -2
- package/docs/agent/e2e-test-plan.md +7 -2
- package/package.json +5 -3
|
@@ -5,14 +5,15 @@ alwaysApply: true
|
|
|
5
5
|
|
|
6
6
|
# Duaer required (NON-NEGOTIABLE)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Treat agents as digital employees: assign a Brief (Spec) before code; accept
|
|
9
|
+
only via converge. See `DUADER.md` and `.duaer/memory/constitution.md`.
|
|
9
10
|
|
|
10
11
|
If this rule conflicts with root `AGENTS.md` / `docs/agent/` (worktrees, commits,
|
|
11
12
|
Issue/PR), **AGENTS.md wins**.
|
|
12
13
|
|
|
13
14
|
## When Duaer is mandatory
|
|
14
15
|
|
|
15
|
-
Always write/update a feature spec before coding for:
|
|
16
|
+
Always write/update a feature spec (Brief) before coding for:
|
|
16
17
|
|
|
17
18
|
- New features / user-visible behavior
|
|
18
19
|
- Architecture or contract changes
|
package/ADOPT.md
CHANGED
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
# Adopt duaer-spec
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Onboard a **digital employee** into another repository: install the Duaer
|
|
4
|
+
delivery OS (method) and the agent-ops contract (how they are allowed to work).
|
|
5
5
|
|
|
6
6
|
## Recommended: CLI
|
|
7
7
|
|
|
8
8
|
From the target project (Node 18+):
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
|
-
# GitHub pin
|
|
12
|
-
npx github:fujiezee/duaer-spec@v0.1.0 duaer init --here
|
|
13
|
-
|
|
14
|
-
# npm (after publish)
|
|
15
11
|
npx duaer-spec init --here
|
|
16
12
|
|
|
17
|
-
#
|
|
18
|
-
npx github:fujiezee/duaer-spec@v0.1.
|
|
19
|
-
|
|
13
|
+
# Pin a release
|
|
14
|
+
npx github:fujiezee/duaer-spec@v0.1.1 duaer init --here
|
|
15
|
+
|
|
16
|
+
# Lite (method only) / ops only / other integration branch
|
|
17
|
+
npx duaer-spec init --here --method
|
|
18
|
+
npx duaer-spec init --here --ops --branch develop
|
|
20
19
|
```
|
|
21
20
|
|
|
22
21
|
From a clone of this repo:
|
|
@@ -30,9 +29,11 @@ node bin/duaer.mjs check /path/to/project
|
|
|
30
29
|
|
|
31
30
|
Then:
|
|
32
31
|
|
|
33
|
-
1.
|
|
34
|
-
2. Confirm `docs/baseline.md` (integration branch)
|
|
35
|
-
3.
|
|
32
|
+
1. **Orient** — edit `.duaer/memory/constitution.md` and `project-context.md`
|
|
33
|
+
2. **Confirm workplace** — `docs/baseline.md` (integration branch)
|
|
34
|
+
3. **Assign → work → accept** — `/duaer-specify` → `/duaer-plan` → `/duaer-tasks` → `/duaer-implement` → `/duaer-converge`
|
|
35
|
+
|
|
36
|
+
A job without Spec is not assigned. A change that fails converge is not accepted.
|
|
36
37
|
|
|
37
38
|
## Manual copy (optional)
|
|
38
39
|
|
|
@@ -59,7 +60,7 @@ cp DUADER.md /path/to/project/
|
|
|
59
60
|
|
|
60
61
|
## Precedence
|
|
61
62
|
|
|
62
|
-
1. `AGENTS.md` / agent-ops — how
|
|
63
|
+
1. `AGENTS.md` / agent-ops — how employees operate
|
|
63
64
|
2. `DUADER.md` / `.duaer/` — what to build
|
|
64
65
|
3. Product overlays (do not copy `examples/` blindly)
|
|
65
66
|
|
package/AGENTS.md
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
Mandatory rules for AI coding agents working in **duaer-spec**, and for any
|
|
4
4
|
repository that adopts this file as its agent-ops contract.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
Treat agents as **digital employees**: this file is the workplace policy for
|
|
7
|
+
*how* they may operate (isolation, commits, Issue/PR gates). Duaer
|
|
8
|
+
([`DUADER.md`](DUADER.md)) is how jobs are briefed and accepted. If Duaer
|
|
9
|
+
(`.duaer/`), `examples/`, or other overlays conflict with this file,
|
|
8
10
|
**follow this file**.
|
|
9
11
|
|
|
10
12
|
See also: [workflow](docs/agent/workflow.md) · [change checklist](docs/agent/change-checklist.md) · [ADOPT](ADOPT.md)
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.1 — 2026-09-15
|
|
4
|
+
|
|
5
|
+
### Docs / product identity
|
|
6
|
+
|
|
7
|
+
- Position Duaer as a **delivery OS for AI digital employees**: hire → assign
|
|
8
|
+
(Spec) → work → accept (converge)
|
|
9
|
+
- README, ADOPT, DUADER, AGENTS intro, and CLI `init` / `check` / help copy
|
|
10
|
+
use that language
|
|
11
|
+
- E2E catalog: E2E-001 (init next steps), E2E-002 (README positioning)
|
|
12
|
+
|
|
3
13
|
## 0.1.0 — 2026-09-15
|
|
4
14
|
|
|
5
15
|
First public methodology release.
|
package/DUADER.md
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
# Duaer methodology
|
|
2
2
|
|
|
3
|
-
**duaer-spec** owns this method.
|
|
4
|
-
|
|
3
|
+
**duaer-spec** owns this method. Treat AI coding agents as **digital employees**:
|
|
4
|
+
you assign a Brief (Spec), they follow a fixed work order, and delivery only
|
|
5
|
+
counts after **converge** accepts the result against that Brief.
|
|
6
|
+
|
|
7
|
+
Artifacts live under `.duaer/`; Cursor skills are `duaer-*` at `.cursor/skills/`.
|
|
5
8
|
|
|
6
9
|
**Precedence:** root [`AGENTS.md`](AGENTS.md) / [`docs/agent/`](docs/agent/) win
|
|
7
10
|
over anything here for isolation, commits, and Issue/PR gates.
|
|
@@ -18,24 +21,24 @@ over anything here for isolation, commits, and Issue/PR gates.
|
|
|
18
21
|
**Full (recommended):**
|
|
19
22
|
|
|
20
23
|
1. `/duaer-constitution` — only when principles change
|
|
21
|
-
2. `/duaer-specify` — what / why / acceptance (not stack trivia)
|
|
24
|
+
2. `/duaer-specify` — **Assign**: what / why / acceptance (not stack trivia)
|
|
22
25
|
3. `/duaer-clarify` — optional
|
|
23
26
|
4. `/duaer-plan` — technical plan aligned with project-context
|
|
24
27
|
5. `/duaer-checklist` — optional quality checklist
|
|
25
28
|
6. `/duaer-tasks` — checkbox task breakdown
|
|
26
29
|
7. `/duaer-analyze` — optional consistency check
|
|
27
30
|
8. `/duaer-implement` — implement tasks only
|
|
28
|
-
9. `/duaer-converge` — compare result to
|
|
31
|
+
9. `/duaer-converge` — **Accept**: compare result to Spec; append remaining tasks if gaps
|
|
29
32
|
|
|
30
33
|
**Small feature:** specify → plan → tasks → implement → converge
|
|
31
34
|
|
|
32
35
|
**Hotfix:** specify (mark hotfix) → tasks → implement → converge
|
|
33
|
-
Never skip specify or converge.
|
|
36
|
+
Never skip specify (assign) or converge (accept).
|
|
34
37
|
|
|
35
38
|
## Install
|
|
36
39
|
|
|
37
40
|
```bash
|
|
38
|
-
npx
|
|
41
|
+
npx duaer-spec init --here
|
|
39
42
|
```
|
|
40
43
|
|
|
41
44
|
Or see [`ADOPT.md`](ADOPT.md). No third-party Spec CLI is required — `duaer`
|
|
@@ -45,7 +48,7 @@ installs this repository's method files into the target project.
|
|
|
45
48
|
|
|
46
49
|
```text
|
|
47
50
|
.duaer/specs/<nnn-slug>/
|
|
48
|
-
spec.md
|
|
51
|
+
spec.md # Brief
|
|
49
52
|
plan.md # after /duaer-plan
|
|
50
53
|
tasks.md # after /duaer-tasks
|
|
51
54
|
… # research / contracts as needed
|
package/README.md
CHANGED
|
@@ -1,39 +1,52 @@
|
|
|
1
1
|
# duaer-spec
|
|
2
2
|
|
|
3
|
-
**Duaer** is a
|
|
4
|
-
|
|
5
|
-
Issue/PR gates.
|
|
3
|
+
**Duaer** is a delivery operating system for AI coding agents treated as
|
|
4
|
+
**digital employees**.
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
Agents write the code. Duaer makes the **handoff controllable**: every job has a
|
|
7
|
+
Brief (Spec), follows a fixed work order, and only counts as done after
|
|
8
|
+
acceptance — not after a lucky chat.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Cursor is the labor. Duaer is hire → assign → accept.
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
# GitHub (available now)
|
|
14
|
-
npx github:fujiezee/duaer-spec@v0.1.0 duaer init --here
|
|
12
|
+
## Install (onboard the employee)
|
|
15
13
|
|
|
16
|
-
|
|
14
|
+
```bash
|
|
17
15
|
npx duaer-spec init --here
|
|
16
|
+
# or pin: npx github:fujiezee/duaer-spec@v0.1.1 duaer init --here
|
|
18
17
|
```
|
|
19
18
|
|
|
20
19
|
```bash
|
|
21
|
-
# method only
|
|
22
|
-
npx
|
|
23
|
-
|
|
20
|
+
# Lite: method only (personal / small changes)
|
|
21
|
+
npx duaer-spec init --here --method
|
|
22
|
+
|
|
23
|
+
# Full ops on another integration branch
|
|
24
|
+
npx duaer-spec init --here --ops --branch develop
|
|
24
25
|
```
|
|
25
26
|
|
|
26
|
-
Verify: `npx
|
|
27
|
+
Verify: `npx duaer-spec check .`
|
|
27
28
|
Details: [`ADOPT.md`](ADOPT.md)
|
|
28
29
|
|
|
30
|
+
## How you run them
|
|
31
|
+
|
|
32
|
+
| Step | Meaning | Command |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| **Hire** | Install SOP + gates into the repo | `duaer init` |
|
|
35
|
+
| **Assign** | Write the Brief (what / why / acceptance) | `/duaer-specify` |
|
|
36
|
+
| **Work** | Plan, break down, implement | `/duaer-plan` → `/duaer-tasks` → `/duaer-implement` |
|
|
37
|
+
| **Accept** | Compare result to Spec; gaps become more work | `/duaer-converge` + `duaer check` |
|
|
38
|
+
|
|
39
|
+
Never skip **Assign** or **Accept**. Hotfix may shorten the middle; Spec and
|
|
40
|
+
converge stay.
|
|
41
|
+
|
|
29
42
|
## Two layers
|
|
30
43
|
|
|
31
44
|
| Layer | Role | Where |
|
|
32
45
|
|---|---|---|
|
|
33
|
-
| **Agent ops** | How
|
|
46
|
+
| **Agent ops** | How the employee is allowed to operate | [`AGENTS.md`](AGENTS.md), [`docs/agent/`](docs/agent/) |
|
|
34
47
|
| **Duaer method** | What to build (Spec → Plan → Tasks → Implement → Converge) | [`DUADER.md`](DUADER.md), [`.duaer/`](.duaer/), [`.cursor/skills/`](.cursor/skills/) |
|
|
35
48
|
|
|
36
|
-
When they conflict, **agent ops win
|
|
49
|
+
When they conflict, **agent ops win** — process beats improvisation.
|
|
37
50
|
|
|
38
51
|
## Default loop
|
|
39
52
|
|
|
@@ -52,14 +65,15 @@ Slash skills: `/duaer-specify`, `/duaer-plan`, `/duaer-tasks`, `/duaer-implement
|
|
|
52
65
|
```text
|
|
53
66
|
bin/duaer.mjs CLI (duaer init | check | version)
|
|
54
67
|
package.json npm package metadata
|
|
55
|
-
AGENTS.md Agent-ops contract
|
|
56
|
-
DUADER.md Methodology conventions
|
|
57
|
-
ADOPT.md
|
|
68
|
+
AGENTS.md Agent-ops contract (how employees operate)
|
|
69
|
+
DUADER.md Methodology conventions (how work is briefed)
|
|
70
|
+
ADOPT.md Onboarding guide
|
|
58
71
|
.duaer/ Memory, templates, workflows, scripts
|
|
59
72
|
.cursor/rules/ Agent-ops + Duaer rules
|
|
60
73
|
.cursor/skills/ duaer-* skills
|
|
61
74
|
docs/agent/ Workflow detail + checklists
|
|
62
75
|
docs/maintaining.md How maintainers evolve the method
|
|
76
|
+
docs/npm-trusted-publishing.md npm Trusted Publishing (OIDC) setup
|
|
63
77
|
examples/ Optional product overlays (not defaults)
|
|
64
78
|
```
|
|
65
79
|
|
package/bin/duaer.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* duaer — CLI for the duaer-spec
|
|
3
|
+
* duaer — CLI for the duaer-spec delivery OS (digital employees)
|
|
4
4
|
*
|
|
5
5
|
* duaer init [dir] [--all|--method|--ops] [--force] [--branch <name>]
|
|
6
6
|
* duaer check [dir]
|
|
@@ -24,23 +24,26 @@ const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
|
24
24
|
const PKG_ROOT = resolve(__dirname, '..')
|
|
25
25
|
const PKG = JSON.parse(readFileSync(join(PKG_ROOT, 'package.json'), 'utf8'))
|
|
26
26
|
|
|
27
|
-
const USAGE = `duaer —
|
|
27
|
+
const USAGE = `duaer — Delivery OS for AI digital employees (duaer-spec ${PKG.version})
|
|
28
|
+
|
|
29
|
+
Hire agents into a repo, assign Briefs (Specs), accept only when converge passes.
|
|
28
30
|
|
|
29
31
|
Usage:
|
|
30
|
-
duaer init [dir] [options]
|
|
31
|
-
duaer check [dir] Verify install
|
|
32
|
+
duaer init [dir] [options] Hire / onboard into a project
|
|
33
|
+
duaer check [dir] Verify install (workplace ready)
|
|
32
34
|
duaer version Print version
|
|
33
35
|
duaer help Show this help
|
|
34
36
|
|
|
35
37
|
Init options:
|
|
36
|
-
--all
|
|
37
|
-
--method
|
|
38
|
-
--ops
|
|
38
|
+
--all Full hire: agent ops + method (default)
|
|
39
|
+
--method Lite: method only (.duaer, skills, DUADER.md, duaer-spec rule)
|
|
40
|
+
--ops Ops only (AGENTS.md, docs/agent, ops rules)
|
|
39
41
|
--force Overwrite existing managed files
|
|
40
42
|
--branch <n> Integration branch for baseline note (default: main)
|
|
41
43
|
--here Same as dir=.
|
|
42
44
|
|
|
43
45
|
Examples:
|
|
46
|
+
npx duaer-spec init --here
|
|
44
47
|
npx github:fujiezee/duaer-spec duaer init --here
|
|
45
48
|
node bin/duaer.mjs init ../my-app --all
|
|
46
49
|
duaer check .
|
|
@@ -218,14 +221,17 @@ function cmdInit(opts) {
|
|
|
218
221
|
}
|
|
219
222
|
|
|
220
223
|
console.log(`
|
|
221
|
-
|
|
224
|
+
Hired.
|
|
222
225
|
|
|
223
|
-
Next:
|
|
224
|
-
1.
|
|
225
|
-
2.
|
|
226
|
-
3.
|
|
227
|
-
4.
|
|
226
|
+
Next (digital employee loop):
|
|
227
|
+
1. Orient — edit .duaer/memory/constitution.md and project-context.md
|
|
228
|
+
2. Workplace — confirm docs/baseline.md (integration branch: ${opts.branch})
|
|
229
|
+
3. Assign — /duaer-specify (Brief: what / why / acceptance)
|
|
230
|
+
4. Work — /duaer-plan → /duaer-tasks → /duaer-implement
|
|
231
|
+
5. Accept — /duaer-converge (gaps are not done; append tasks)
|
|
232
|
+
6. Gates — AGENTS.md wins over DUADER.md when they conflict
|
|
228
233
|
|
|
234
|
+
No Spec = not assigned. Failed converge = not accepted.
|
|
229
235
|
See DUADER.md and AGENTS.md in the target project.
|
|
230
236
|
`)
|
|
231
237
|
}
|
|
@@ -252,7 +258,7 @@ function cmdCheck(dir) {
|
|
|
252
258
|
console.log(`\n${missing} missing — run: duaer init ${dir} --all`)
|
|
253
259
|
process.exitCode = 1
|
|
254
260
|
} else {
|
|
255
|
-
console.log('\
|
|
261
|
+
console.log('\nWorkplace ready — assign with /duaer-specify, accept with /duaer-converge.')
|
|
256
262
|
}
|
|
257
263
|
}
|
|
258
264
|
|
package/docs/agent/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Agent workflow (duaer-spec)
|
|
2
2
|
|
|
3
|
-
Authoritative docs for *how*
|
|
4
|
-
when they conflict.
|
|
3
|
+
Authoritative docs for *how* digital employees operate (workplace policy).
|
|
4
|
+
Wins over Duaer and `examples/` when they conflict.
|
|
5
5
|
|
|
6
6
|
| Doc | Description |
|
|
7
7
|
|---|---|
|
|
@@ -20,9 +20,13 @@ Status: planned | automated | manual
|
|
|
20
20
|
|
|
21
21
|
## Catalog
|
|
22
22
|
|
|
23
|
+
This repository’s own product surface (CLI + docs). Adopters replace or extend
|
|
24
|
+
the table for their app.
|
|
25
|
+
|
|
23
26
|
| ID | Title | Status |
|
|
24
27
|
|---|---|---|
|
|
25
|
-
|
|
|
28
|
+
| E2E-001 | After `duaer init`, CLI prints hire → assign → accept next steps | manual |
|
|
29
|
+
| E2E-002 | README positions Duaer as delivery OS for digital employees | manual |
|
|
26
30
|
|
|
27
31
|
## Traceability
|
|
28
32
|
|
|
@@ -30,4 +34,5 @@ Keep this matrix current when scenarios or specs change.
|
|
|
30
34
|
|
|
31
35
|
| Scenario | Spec / feature | Notes |
|
|
32
36
|
|---|---|---|
|
|
33
|
-
|
|
|
37
|
+
| E2E-001 | `bin/duaer.mjs` init banner | Controllable-delivery onboarding |
|
|
38
|
+
| E2E-002 | `README.md` / `ADOPT.md` | Product identity |
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "duaer-spec",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Delivery OS for AI digital employees: Spec briefs, agent ops, controllable handoffs",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"duaer": "bin/duaer.mjs",
|
|
@@ -36,11 +36,13 @@
|
|
|
36
36
|
"homepage": "https://github.com/fujiezee/duaer-spec#readme",
|
|
37
37
|
"keywords": [
|
|
38
38
|
"duaer",
|
|
39
|
+
"digital-employee",
|
|
40
|
+
"delivery-os",
|
|
39
41
|
"spec-driven",
|
|
40
42
|
"agents",
|
|
41
43
|
"cursor",
|
|
42
44
|
"ai-engineering",
|
|
43
|
-
"
|
|
45
|
+
"controllable-delivery"
|
|
44
46
|
],
|
|
45
47
|
"license": "MIT",
|
|
46
48
|
"scripts": {
|