duaer-spec 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor/rules/duaer-spec.mdc +28 -15
- package/.cursor/skills/duaer-do/SKILL.md +28 -33
- package/.duaer/memory/constitution.md +6 -11
- package/ADOPT.md +18 -21
- package/AGENTS.md +3 -2
- package/CHANGELOG.md +14 -22
- package/DUADER.md +24 -33
- package/README.md +19 -33
- package/bin/duaer.mjs +11 -15
- package/docs/agent/change-checklist.md +1 -1
- package/docs/agent/e2e-test-plan.md +12 -18
- package/package.json +2 -2
|
@@ -1,28 +1,41 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: Autonomous digital employee — run Duaer job loop without asking the user to operate
|
|
3
3
|
alwaysApply: true
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Digital employee (autonomous)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
You are a **digital employee** in this repo. The human gives intent in normal
|
|
9
|
+
language. **You** run the delivery process. Do **not** ask them to type slash
|
|
10
|
+
commands, CLI flags, or phase names (`specify`, `plan`, `tasks`, …).
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
If this conflicts with root `AGENTS.md` (worktrees, commits, Issue/PR),
|
|
13
|
+
**AGENTS.md wins**.
|
|
11
14
|
|
|
12
|
-
|
|
15
|
+
## When the human asks for work
|
|
13
16
|
|
|
14
|
-
|
|
17
|
+
For new behavior, fixes, refactors that change product behavior, or architecture:
|
|
15
18
|
|
|
16
|
-
1.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
1. **Silently follow** the procedure in `.cursor/skills/duaer-do/SKILL.md`
|
|
20
|
+
(assign Brief → light tasks → implement → converge → handoff line).
|
|
21
|
+
2. Do **not** wait for `/duaer-do` or any other skill invocation.
|
|
22
|
+
3. Do **not** say “please run `/duaer-specify`” — you do it.
|
|
23
|
+
4. Do **not** dump a methodology tutorial unless they ask how Duaer works.
|
|
19
24
|
|
|
20
|
-
##
|
|
25
|
+
## Handoff
|
|
21
26
|
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
|
|
27
|
+
- End with whether the **job** is accepted or still open (one clear line).
|
|
28
|
+
- Do **not** claim “done” / “finished” / “complete” unless `delivery.json` is
|
|
29
|
+
`accepted` and open tasks are clear.
|
|
30
|
+
- Do **not** tell them to run `duaer status` unless they want a machine check;
|
|
31
|
+
you already know the handoff state.
|
|
25
32
|
|
|
26
|
-
|
|
33
|
+
## Forbidden
|
|
27
34
|
|
|
28
|
-
|
|
35
|
+
- Jump from chat to code with no Brief under `.duaer/specs/`.
|
|
36
|
+
- Making the human operate the workflow.
|
|
37
|
+
|
|
38
|
+
## Optional finer tools (agent-only)
|
|
39
|
+
|
|
40
|
+
Step skills (`duaer-specify`, `duaer-plan`, …) are **your** playbooks when a
|
|
41
|
+
job is large. The human should not need to know they exist.
|
|
@@ -1,62 +1,57 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: "duaer-do"
|
|
3
|
-
description: "
|
|
3
|
+
description: "Autonomous job loop for digital employees: Brief → work → accept. Agents must follow this whenever the user asks for product work — without waiting for the user to invoke this skill or any CLI."
|
|
4
4
|
compatibility: "Requires duaer-spec project structure with .duaer/ directory"
|
|
5
5
|
metadata:
|
|
6
6
|
author: "duaer-spec"
|
|
7
7
|
source: "duaer-spec"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## Trigger
|
|
11
|
+
|
|
12
|
+
Any human ask that needs code or product behavior changed.
|
|
13
|
+
**Do not require** the human to type `/duaer-do` or name phases.
|
|
14
|
+
|
|
10
15
|
## User Input
|
|
11
16
|
|
|
12
17
|
```text
|
|
13
18
|
$ARGUMENTS
|
|
14
19
|
```
|
|
15
20
|
|
|
16
|
-
|
|
21
|
+
If empty, use the current conversation ask as the job.
|
|
17
22
|
|
|
18
23
|
## Goal
|
|
19
24
|
|
|
20
|
-
|
|
21
|
-
asking the user to chain slash commands.
|
|
25
|
+
Run one job end-to-end. The human should only review the result.
|
|
22
26
|
|
|
23
|
-
Do **not** lecture about methodology. Do
|
|
27
|
+
Do **not** lecture about methodology. Do **not** ask them to run commands.
|
|
24
28
|
|
|
25
|
-
## Steps (
|
|
29
|
+
## Steps (you perform these)
|
|
26
30
|
|
|
27
|
-
1. **Assign** — Ensure an active
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
(create `.duaer/specs/<nnn-slug>/spec.md`, write `.duaer/active-job.json`).
|
|
32
|
-
- For small asks: keep the Spec short (what / why / acceptance only).
|
|
31
|
+
1. **Assign** — Ensure an active Brief:
|
|
32
|
+
- Matching active job (`.duaer/active-job.json` + `spec.md`) → update acceptance if needed.
|
|
33
|
+
- Else create `.duaer/specs/<nnn-slug>/spec.md` and `.duaer/active-job.json`
|
|
34
|
+
(same outcome as specify). Keep small asks short: what / why / acceptance.
|
|
33
35
|
|
|
34
|
-
2. **Break down
|
|
35
|
-
|
|
36
|
-
- Skip `/duaer-plan` unless architecture or contracts clearly change.
|
|
37
|
-
- If `tasks.md` already exists, use it.
|
|
36
|
+
2. **Break down** — If `tasks.md` missing, write a short checklist from the Spec.
|
|
37
|
+
Skip a heavy plan unless architecture or contracts change.
|
|
38
38
|
|
|
39
|
-
3. **Work** — Implement open tasks
|
|
40
|
-
Mark tasks `[x]` as you finish them. Do not expand scope past the Spec.
|
|
39
|
+
3. **Work** — Implement open tasks; mark `[x]` as you go. No scope beyond Spec.
|
|
41
40
|
|
|
42
|
-
4. **Accept** —
|
|
43
|
-
|
|
44
|
-
- If gaps were appended, either implement them now (preferred for small jobs)
|
|
45
|
-
or stop and tell the user what remains — once.
|
|
41
|
+
4. **Accept** — Converge against Spec: stamp `delivery.json` `accepted`, or append
|
|
42
|
+
gap tasks and implement them when small enough; otherwise one clear remaining note.
|
|
46
43
|
|
|
47
|
-
5. **Handoff
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
(coach/strict policy). Git is not locked.
|
|
44
|
+
5. **Handoff** — One line to the human:
|
|
45
|
+
- `✅ Job accepted — ready for your review.`
|
|
46
|
+
- `⏳ Job not accepted yet — <one sentence>.`
|
|
47
|
+
Never claim done unless accepted + tasks clear. Git is not locked by this.
|
|
52
48
|
|
|
53
49
|
## Hotfix
|
|
54
50
|
|
|
55
|
-
|
|
56
|
-
acceptance), then tasks → implement → converge. Same handoff line.
|
|
51
|
+
Still a short Spec (symptom / cause / acceptance), then work + accept. Same handoff.
|
|
57
52
|
|
|
58
|
-
##
|
|
53
|
+
## Never
|
|
59
54
|
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
55
|
+
- Ask the human to run `/duaer-*`, `duaer status`, or `duaer policy`.
|
|
56
|
+
- Discuss policy modes unless they ask.
|
|
57
|
+
- Block on slash-command invocation.
|
|
@@ -10,14 +10,9 @@ Duaer for what to build.
|
|
|
10
10
|
|
|
11
11
|
### I. Spec before code (NON-NEGOTIABLE)
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
Default path for fine control:
|
|
17
|
-
|
|
18
|
-
`specify` → (optional plan/tasks) → `implement` → `converge` → `duaer status`
|
|
19
|
-
|
|
20
|
-
Hotfix may shorten; still Spec + converge (or `/duaer-do`).
|
|
13
|
+
The **agent** starts a Brief before coding — the human does not operate phases.
|
|
14
|
+
Autonomous default: follow `duaer-do` (Brief → tasks → implement → converge).
|
|
15
|
+
Never skip Spec or converge. Never ask the human to run `/duaer-*` for normal work.
|
|
21
16
|
|
|
22
17
|
### II. Read as-is before changing
|
|
23
18
|
|
|
@@ -37,6 +32,6 @@ Do not expand scope without updating the spec and tasks.
|
|
|
37
32
|
Mark tasks complete only when the stated verification (tests, manual checks,
|
|
38
33
|
or converge) has been performed or explicitly waived in the feature docs.
|
|
39
34
|
|
|
40
|
-
**Job handoff (not a git lock):**
|
|
41
|
-
`coach` — do not claim "done" while the active job is unfinished.
|
|
42
|
-
not
|
|
35
|
+
**Job handoff (not a git lock):** the agent reports accept/open itself.
|
|
36
|
+
Default policy `coach` — do not claim "done" while the active job is unfinished.
|
|
37
|
+
Do not send the human to run `duaer status` for routine work.
|
package/ADOPT.md
CHANGED
|
@@ -1,45 +1,42 @@
|
|
|
1
1
|
# Adopt duaer-spec
|
|
2
2
|
|
|
3
|
-
Install
|
|
3
|
+
Install once so the coding agent behaves as a **digital employee**: it runs
|
|
4
|
+
Brief → work → accept **without** the human operating slash commands or CLI.
|
|
4
5
|
|
|
5
|
-
## Install
|
|
6
|
+
## Install (human, once)
|
|
6
7
|
|
|
7
8
|
```bash
|
|
8
9
|
npx duaer-spec init --here
|
|
9
|
-
# pin: npx github:fujiezee/duaer-spec@v0.
|
|
10
|
+
# pin: npx github:fujiezee/duaer-spec@v0.5.0 duaer init --here
|
|
10
11
|
```
|
|
11
12
|
|
|
12
13
|
```bash
|
|
13
|
-
npx duaer-spec init --here --method
|
|
14
|
+
npx duaer-spec init --here --method
|
|
14
15
|
npx duaer-spec init --here --ops --branch develop
|
|
15
16
|
```
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
After that: talk to the agent in plain language. Do not teach them `/duaer-*`.
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
2. `duaer status` when you want to see if the job is accepted
|
|
20
|
+
## What gets installed
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
- Always-on rule: agent must run the autonomous job loop on product work
|
|
23
|
+
- Playbook skill `duaer-do` (agent follows it; human need not invoke it)
|
|
24
|
+
- Optional step skills for large jobs (agent-only)
|
|
25
|
+
- Agent ops (`AGENTS.md`) when using `--all` / `--ops`
|
|
23
26
|
|
|
24
|
-
##
|
|
27
|
+
## Power users / agents
|
|
25
28
|
|
|
26
|
-
|
|
|
29
|
+
| Tool | Who uses it |
|
|
27
30
|
|---|---|
|
|
28
|
-
| `/duaer-
|
|
29
|
-
| `/duaer-
|
|
30
|
-
|
|
|
31
|
-
| `/duaer-converge` | Re-check Spec vs code |
|
|
32
|
-
| `duaer policy . strict` | Harder “don’t claim done” (still not a git lock) |
|
|
31
|
+
| `/duaer-do` procedure | Agent (automatic) |
|
|
32
|
+
| `/duaer-specify` … `/duaer-converge` | Agent, when splitting a large job |
|
|
33
|
+
| `duaer status` / `duaer policy` | Optional diagnostics — not required of humans |
|
|
33
34
|
|
|
34
35
|
## Precedence
|
|
35
36
|
|
|
36
37
|
1. `AGENTS.md` — how employees operate
|
|
37
|
-
2. `DUADER.md` / `.duaer/` —
|
|
38
|
+
2. `DUADER.md` / `.duaer/` — how jobs are briefed
|
|
38
39
|
|
|
39
40
|
## Updates
|
|
40
41
|
|
|
41
|
-
`duaer init --force` (review the diff) or pin a tag.
|
|
42
|
-
|
|
43
|
-
## Do not copy
|
|
44
|
-
|
|
45
|
-
`examples/`, `SOURCE.md`, `bin/` / `package.json` (unless vendoring the CLI)
|
|
42
|
+
`duaer init --force` (review the diff) or pin a tag.
|
package/AGENTS.md
CHANGED
|
@@ -3,8 +3,9 @@
|
|
|
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
|
-
Treat agents as **digital employees**:
|
|
7
|
-
|
|
6
|
+
Treat agents as **digital employees**: they execute the job loop themselves.
|
|
7
|
+
Humans state intent; they do not operate Duaer phases. This file is workplace
|
|
8
|
+
policy for *how* agents may operate (isolation, commits, Issue/PR gates). Duaer
|
|
8
9
|
([`DUADER.md`](DUADER.md)) is how jobs are briefed and accepted. If Duaer
|
|
9
10
|
(`.duaer/`), `examples/`, or other overlays conflict with this file,
|
|
10
11
|
**follow this file**.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,39 +1,31 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.0 — 2026-09-15
|
|
4
|
+
|
|
5
|
+
### Autonomous digital employee
|
|
6
|
+
|
|
7
|
+
- **Simplicity = humans do not operate the workflow**
|
|
8
|
+
- Always-on rule: on product asks, the agent runs Brief → work → accept itself
|
|
9
|
+
- Do not require `/duaer-do`, phase slash commands, or `duaer status` from humans
|
|
10
|
+
- `duaer-do` is the agent’s internal playbook; install once, then talk
|
|
11
|
+
- README / init / ADOPT / DUADER rewritten around “ask, don’t operate”
|
|
12
|
+
|
|
3
13
|
## 0.4.0 — 2026-09-15
|
|
4
14
|
|
|
5
15
|
### Simple everyday ops
|
|
6
16
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
- README / init / rules lead with hire → `/duaer-do` → `status`
|
|
10
|
-
- Step skills and policy remain available but are advanced, not the default story
|
|
17
|
+
- `/duaer-do` one-shot skill + `duaer status`
|
|
18
|
+
- Step skills demoted to advanced (later reframed as agent-only in 0.5)
|
|
11
19
|
|
|
12
20
|
## 0.3.0 — 2026-09-15
|
|
13
21
|
|
|
14
22
|
### Job handoff (not a repo lock)
|
|
15
23
|
|
|
16
|
-
-
|
|
17
|
-
**active job** is accepted — git merge is not blocked
|
|
18
|
-
- `.duaer/delivery-policy.json` modes: `off` | `coach` | `strict`
|
|
19
|
-
- `.duaer/active-job.json` set by `/duaer-specify`; `duaer job` reports status
|
|
20
|
-
- `duaer policy` to show/set mode
|
|
21
|
-
- `duaer check` defaults to active-job scope; `--strict` / policy `strict` optional
|
|
22
|
-
- `--gate` kept as deprecated alias for `--strict` (job handoff, not CI)
|
|
23
|
-
- `--all-jobs` optional; historical features no longer fail the default path
|
|
24
|
-
- Docs/rules/constitution demote merge-gate language
|
|
25
|
-
|
|
26
|
-
### E2E
|
|
27
|
-
|
|
28
|
-
- E2E-004–007 for coach default, strict optional, active-job scope
|
|
24
|
+
- `coach` / `strict` / `off` policy; active job; `duaer job` / `policy`
|
|
29
25
|
|
|
30
26
|
## 0.2.0 — 2026-09-15
|
|
31
27
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
- `/duaer-converge` writes `.duaer/specs/<feature>/delivery.json`
|
|
35
|
-
- `duaer check` / `--gate` for handoff state
|
|
36
|
-
- Honest scope: handoff state checkable; Spec↔code still agent-assisted
|
|
28
|
+
- `delivery.json` + checkable handoff state
|
|
37
29
|
|
|
38
30
|
## 0.1.1 — 2026-09-15
|
|
39
31
|
|
package/DUADER.md
CHANGED
|
@@ -1,54 +1,45 @@
|
|
|
1
1
|
# Duaer methodology
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
AI coding agents are **digital employees**. The human states intent; the agent
|
|
4
|
+
runs Brief → work → accept. Humans are not the operators of the phase machine.
|
|
5
5
|
|
|
6
6
|
**Precedence:** [`AGENTS.md`](AGENTS.md) wins on isolation, commits, Issue/PR.
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## Human experience
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
`/duaer-do` assigns a Brief, implements, converges, and reports handoff.
|
|
15
|
-
Do not require the user to run every phase skill.
|
|
10
|
+
1. One-time: `npx duaer-spec init --here`
|
|
11
|
+
2. Ongoing: describe work in chat
|
|
12
|
+
3. Review the handoff line (accepted / not yet)
|
|
16
13
|
|
|
17
|
-
##
|
|
14
|
+
## Agent procedure (autonomous)
|
|
18
15
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
3. `/duaer-tasks` — explicit checkbox breakdown
|
|
22
|
-
4. `/duaer-implement` — code from tasks
|
|
23
|
-
5. `/duaer-converge` — accept stamp (`delivery.json`)
|
|
24
|
-
6. `duaer status` — may we claim this job done?
|
|
16
|
+
Follow `.cursor/skills/duaer-do/SKILL.md` on every product ask — **without**
|
|
17
|
+
waiting for a slash invocation:
|
|
25
18
|
|
|
26
|
-
|
|
19
|
+
1. Assign Brief + `active-job.json`
|
|
20
|
+
2. Light `tasks.md` if needed
|
|
21
|
+
3. Implement
|
|
22
|
+
4. Converge → `delivery.json`
|
|
23
|
+
5. One handoff line; never claim done until accepted
|
|
27
24
|
|
|
28
|
-
|
|
29
|
-
claim "done" while `duaer status` is unfinished. This is **job handoff**, not a
|
|
30
|
-
git merge lock.
|
|
25
|
+
Large jobs may use step playbooks (`duaer-specify`, `duaer-plan`, …) internally.
|
|
31
26
|
|
|
32
|
-
##
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
npx duaer-spec init --here
|
|
36
|
-
```
|
|
27
|
+
## Policy
|
|
37
28
|
|
|
38
|
-
|
|
29
|
+
`.duaer/delivery-policy.json` defaults to `coach`. Agents must not claim done
|
|
30
|
+
while the active job is unfinished. This is job etiquette, not a git lock.
|
|
31
|
+
Humans need not configure it for everyday use.
|
|
39
32
|
|
|
40
33
|
## Layout
|
|
41
34
|
|
|
42
35
|
```text
|
|
43
|
-
.duaer/
|
|
44
|
-
.duaer/
|
|
45
|
-
.duaer
|
|
46
|
-
|
|
47
|
-
tasks.md
|
|
48
|
-
delivery.json
|
|
36
|
+
.duaer/active-job.json
|
|
37
|
+
.duaer/specs/<nnn-slug>/spec.md|tasks.md|delivery.json
|
|
38
|
+
.cursor/rules/duaer-spec.mdc # autonomous behavior
|
|
39
|
+
.cursor/skills/duaer-do/ # default job loop
|
|
49
40
|
```
|
|
50
41
|
|
|
51
42
|
## Related
|
|
52
43
|
|
|
44
|
+
- Adopt: [`ADOPT.md`](ADOPT.md)
|
|
53
45
|
- Agent ops: [`AGENTS.md`](AGENTS.md)
|
|
54
|
-
- Maintainer notes: [`docs/maintaining.md`](docs/maintaining.md)
|
package/README.md
CHANGED
|
@@ -1,51 +1,37 @@
|
|
|
1
1
|
# duaer-spec
|
|
2
2
|
|
|
3
|
-
**Duaer**
|
|
4
|
-
|
|
3
|
+
**Duaer** turns AI coding agents into **digital employees**: they take a normal
|
|
4
|
+
language ask, run Spec → work → accept themselves, and only claim a job done
|
|
5
|
+
when the handoff is clean.
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
You should **not** have to operate the workflow. After a one-time install, you
|
|
8
|
+
talk; the employee runs the process.
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
npx duaer-spec init --here
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
In Cursor, one command:
|
|
13
|
-
|
|
14
|
-
```text
|
|
15
|
-
/duaer-do <what you want built or fixed>
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
See if the job can be reported done:
|
|
10
|
+
## One-time install
|
|
19
11
|
|
|
20
12
|
```bash
|
|
21
|
-
duaer
|
|
13
|
+
npx duaer-spec init --here
|
|
22
14
|
```
|
|
23
15
|
|
|
24
|
-
|
|
16
|
+
Then use Cursor as usual — describe what you want. No slash-command chain
|
|
17
|
+
required.
|
|
25
18
|
|
|
26
|
-
## What
|
|
19
|
+
## What the employee does (by itself)
|
|
27
20
|
|
|
28
|
-
1. Writes a
|
|
29
|
-
2. Implements
|
|
30
|
-
3. Checks
|
|
21
|
+
1. Writes a Brief (Spec) for the ask
|
|
22
|
+
2. Implements within that Brief
|
|
23
|
+
3. Checks the result and stamps accept / still-open
|
|
24
|
+
4. Tells you in one line whether the job is ready for review
|
|
31
25
|
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
Step skills and CLI checks exist for agents and power users — not as the
|
|
27
|
+
everyday human UI.
|
|
34
28
|
|
|
35
29
|
## Optional
|
|
36
30
|
|
|
37
31
|
```bash
|
|
38
|
-
duaer
|
|
39
|
-
npx duaer-spec@0.4.0 init --here --method # method only
|
|
32
|
+
npx duaer-spec@0.5.0 init --here --method # method only
|
|
40
33
|
```
|
|
41
34
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
## Two layers
|
|
45
|
-
|
|
46
|
-
| Layer | Role |
|
|
47
|
-
|---|---|
|
|
48
|
-
| **Agent ops** | How agents may operate — [`AGENTS.md`](AGENTS.md) |
|
|
49
|
-
| **Duaer method** | How jobs are briefed and accepted — [`.duaer/`](.duaer/), skills |
|
|
35
|
+
Details: [`ADOPT.md`](ADOPT.md) · Method: [`DUADER.md`](DUADER.md) · Ops: [`AGENTS.md`](AGENTS.md)
|
|
50
36
|
|
|
51
|
-
When
|
|
37
|
+
When agent ops and method conflict, **agent ops win**.
|
package/bin/duaer.mjs
CHANGED
|
@@ -26,23 +26,19 @@ const POLICY_MODES = new Set(['off', 'coach', 'strict'])
|
|
|
26
26
|
|
|
27
27
|
const USAGE = `duaer — digital-employee delivery (duaer-spec ${PKG.version})
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
duaer init [--here]
|
|
31
|
-
duaer status [dir] Is the active job accepted?
|
|
29
|
+
Human (once):
|
|
30
|
+
duaer init [--here] Install so the agent works as a digital employee
|
|
32
31
|
|
|
33
|
-
|
|
32
|
+
After install: talk to the agent in plain language. Do not operate /duaer-* phases.
|
|
34
33
|
|
|
35
|
-
|
|
36
|
-
duaer
|
|
37
|
-
duaer
|
|
38
|
-
duaer policy [dir] [off|coach|strict]
|
|
39
|
-
duaer version
|
|
34
|
+
Agent / optional diagnostics:
|
|
35
|
+
duaer status [dir]
|
|
36
|
+
duaer check | policy | version
|
|
40
37
|
|
|
41
38
|
Init: --all (default) | --method | --ops | --force | --branch <n> | --here
|
|
42
39
|
|
|
43
|
-
|
|
40
|
+
Example:
|
|
44
41
|
npx duaer-spec init --here
|
|
45
|
-
duaer status
|
|
46
42
|
`
|
|
47
43
|
|
|
48
44
|
function parseArgs(argv) {
|
|
@@ -283,12 +279,12 @@ function cmdInit(opts) {
|
|
|
283
279
|
}
|
|
284
280
|
|
|
285
281
|
console.log(`
|
|
286
|
-
Hired.
|
|
282
|
+
Hired.
|
|
287
283
|
|
|
288
|
-
|
|
289
|
-
|
|
284
|
+
You: describe work in Cursor (plain language).
|
|
285
|
+
Agent: runs Brief → work → accept by itself — do not operate slash phases.
|
|
290
286
|
|
|
291
|
-
|
|
287
|
+
Optional diagnostic: duaer status
|
|
292
288
|
`)
|
|
293
289
|
}
|
|
294
290
|
|
|
@@ -94,7 +94,7 @@ See [spec update guidance](workflow.md#3-spec-update-guidance).
|
|
|
94
94
|
|
|
95
95
|
## 6. Merge / PR
|
|
96
96
|
|
|
97
|
-
- [ ] Active job handoff considered
|
|
97
|
+
- [ ] Active job handoff considered by the **agent** (do not require the human to run CLI for routine work).
|
|
98
98
|
- [ ] Branch refreshed against latest `main`.
|
|
99
99
|
- [ ] Merged into local `main` (and/or remote PR/MR when required).
|
|
100
100
|
- [ ] Only this request's logical changes included.
|
|
@@ -25,26 +25,20 @@ the table for their app.
|
|
|
25
25
|
|
|
26
26
|
| ID | Title | Status |
|
|
27
27
|
|---|---|---|
|
|
28
|
-
| E2E-001 | After `duaer init`,
|
|
29
|
-
| E2E-002 | README
|
|
30
|
-
| E2E-003 |
|
|
31
|
-
| E2E-004 | Default `coach
|
|
32
|
-
| E2E-005 |
|
|
33
|
-
| E2E-006 | `duaer
|
|
34
|
-
| E2E-007 | `--all-jobs` is optional; default scope is active job only | manual |
|
|
35
|
-
| E2E-008 | `/duaer-do` skill is installed by `duaer init` | manual |
|
|
28
|
+
| E2E-001 | After `duaer init`, banner says talk to agent — no slash ops | manual |
|
|
29
|
+
| E2E-002 | README: install once, then plain-language asks | manual |
|
|
30
|
+
| E2E-003 | Always-on rule requires autonomous job loop without user slash | manual |
|
|
31
|
+
| E2E-004 | Default `coach`: unfinished job — agent must not claim done | manual |
|
|
32
|
+
| E2E-005 | Converge stamps `accepted`; agent reports ready for review | manual |
|
|
33
|
+
| E2E-006 | `duaer-do` skill describes agent-triggered loop | manual |
|
|
36
34
|
|
|
37
35
|
## Traceability
|
|
38
36
|
|
|
39
|
-
Keep this matrix current when scenarios or specs change.
|
|
40
|
-
|
|
41
37
|
| Scenario | Spec / feature | Notes |
|
|
42
38
|
|---|---|---|
|
|
43
|
-
| E2E-001 |
|
|
44
|
-
| E2E-002 |
|
|
45
|
-
| E2E-003 | `duaer
|
|
46
|
-
| E2E-004 |
|
|
47
|
-
| E2E-005 |
|
|
48
|
-
| E2E-006 |
|
|
49
|
-
| E2E-007 | `--all-jobs` vs active | Scope |
|
|
50
|
-
| E2E-008 | `.cursor/skills/duaer-do` | One-shot skill |
|
|
39
|
+
| E2E-001 | init banner | No human phase ops |
|
|
40
|
+
| E2E-002 | README | Ask, don’t operate |
|
|
41
|
+
| E2E-003 | `duaer-spec.mdc` | Autonomous |
|
|
42
|
+
| E2E-004 | policy coach | Handoff etiquette |
|
|
43
|
+
| E2E-005 | `delivery.json` | Accept stamp |
|
|
44
|
+
| E2E-006 | `duaer-do` | Internal playbook |
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "duaer-spec",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Digital employees that run Spec→work→accept themselves — humans just ask",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"duaer": "bin/duaer.mjs",
|