@chinhae/atw-cli 0.2.4 → 0.2.5

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 (23) hide show
  1. package/README.md +34 -0
  2. package/dist/migrations/manifests/0.2.5.json +9 -0
  3. package/dist/templates/common/bundled-skills/dejargonizer/SKILL.md +133 -0
  4. package/dist/templates/common/bundled-skills/noob-mode/SKILL.md +175 -0
  5. package/dist/templates/common/bundled-skills/noob-mode/references/examples.md +418 -0
  6. package/dist/templates/common/bundled-skills/noob-mode/references/glossary.md +368 -0
  7. package/dist/templates/common/bundled-skills/oxy-explanation/SKILL.md +80 -0
  8. package/dist/templates/common/bundled-skills/oxy-learning-hub/SKILL.md +179 -0
  9. package/dist/templates/common/bundled-skills/oxy-learning-hub/assets/course.css +1044 -0
  10. package/dist/templates/common/bundled-skills/oxy-learning-hub/assets/course.js +184 -0
  11. package/dist/templates/common/bundled-skills/oxy-learning-hub/assets/lesson-template.html +125 -0
  12. package/dist/templates/common/bundled-skills/oxy-learning-hub/assets/summary-template.html +659 -0
  13. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/publishing.md +64 -0
  14. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/summary-mode.md +96 -0
  15. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/teaching/GLOSSARY-FORMAT.md +30 -0
  16. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/teaching/LEARNING-RECORD-FORMAT.md +42 -0
  17. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/teaching/MISSION-FORMAT.md +50 -0
  18. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/teaching/RESOURCES-FORMAT.md +40 -0
  19. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/teaching-mode.md +251 -0
  20. package/dist/templates/common/bundled-skills/oxy-learning-hub/references/workspace.md +112 -0
  21. package/dist/templates/common/bundled-skills/oxy-learning-hub/scripts/validate_html.py +198 -0
  22. package/dist/templates/common/bundled-skills/show-me/SKILL.md +127 -0
  23. package/package.json +2 -2
package/README.md CHANGED
@@ -43,6 +43,40 @@ atw init -u your-name
43
43
  atw init --cursor --opencode --codex -u your-name
44
44
  ```
45
45
 
46
+ ## Set Up a Project
47
+
48
+ `atw init` writes the files. Two one-time steps make them useful. Order between
49
+ them doesn't matter; the AI does most of the work in both.
50
+
51
+ **1. Run `/atw-init-repo`.** Records three things the engineering skills assume:
52
+ where issues live, the triage label vocabulary, and where domain docs go. Output
53
+ is three files under `docs/agents/`, read by `atw-spec`, `atw-tickets`,
54
+ `atw-triage`, `atw-map`, `atw-code-review` and `atw-research`. Takes a few
55
+ minutes. You must run it yourself — the AI cannot invoke this one.
56
+
57
+ **2. Fill `.atw/spec/`.** Init leaves the spec files as empty placeholders, so
58
+ review sub-agents have no conventions to match and write generic code. Two ways
59
+ in — pick one, they do the same job:
60
+
61
+ - `python3 ./.atw/scripts/task.py start 00-bootstrap-guidelines`, then tell the
62
+ agent to start that task. Run the command from inside an AI session so the
63
+ session identity reaches the script. Checklist-driven: it asks whether an
64
+ existing `CLAUDE.md`, `.cursorrules` or `CONTRIBUTING.md` can be imported
65
+ before it reads any source.
66
+ - `/atw-spec-bootstrap` — the same work as a skill. One agent analyses the
67
+ codebase and writes the docs.
68
+
69
+ Close it out with `task.py finish`, then
70
+ `task.py archive 00-bootstrap-guidelines`. After the archive, teammates who run
71
+ `atw init` get a `00-join-<slug>` onboarding task instead of the bootstrap one.
72
+
73
+ **Then commit** `.atw/`, `docs/agents/`, `.gitattributes` and `AGENTS.md`.
74
+ Teammates should clone your conventions, not an empty scaffold.
75
+
76
+ Neither step is mandatory — triage, tasks and specs all work without them. What
77
+ you give up is concrete: sub-agents matching your patterns, and skills knowing
78
+ where issues and research notes belong.
79
+
46
80
  ## How It Works
47
81
 
48
82
  ATW runs three phases over a six-stage task record:
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.2.5",
3
+ "description": "Five plain-language skills ship with every install, and the README documents the two setup steps that follow atw init.",
4
+ "breaking": false,
5
+ "recommendMigrate": false,
6
+ "changelog": "Five new bundled skills: dejargonizer (explain coding work to a non-technical person), noob-mode (plain-language guidance for non-technical users of any coding agent), oxy-explanation (rewrite anything so a bright 12-year-old follows it), oxy-learning-hub (summarise or teach from links, docs, code and long text, with interactive HTML courses), and show-me (diagrams, code-shape sketches and focused HTML artifacts). Three are user-triggered only; oxy-learning-hub and show-me can also auto-trigger. Bundled skills need no dispatch wiring, so all five reach every platform's skill root on the next atw update. Landing them corrected four tests and one lint config that assumed a bundled skill contains nothing but markdown: eslint now exempts bundled-skill assets (scoped to bundled-skills, not to src/templates, so the OpenCode plugins stay linted), the qoder and codebuddy compiled-artifact walks skip the skill root while still covering hooks, commands and agents, the pi Python-hook guard filters to the hook layer it was written to protect, and the gemini test checks a skill directory against what the resolvers return instead of requiring an `atw-` prefix that bundled-skills.md never required. Both READMEs gained a setup section: `atw init` writes the files, and the two one-time steps that make them useful are /atw-init-repo and filling .atw/spec/ — including the detail that `task.py start` must run inside an AI session or the session identity never reaches the script.",
7
+ "migrations": [],
8
+ "notes": "No migration required. Every template change in this release is an addition: `git diff --name-status -M v0.2.4..HEAD -- packages/cli/src/templates/` reports 20 A and zero M/D/R, and config.yaml gained no top-level key. The five skill directories land through the standard missing-file branch of `atw update`; a project that has never seen them cannot have modified them, so no prompt appears.\n\nDistribution was verified end to end rather than inferred: build copies all 20 files into dist/templates/common/bundled-skills/, `npm pack --dry-run` carries them (3.12 MB / 720 files to 3.13 MB / 740), a fresh `atw init` writes them under .claude/skills/, .template-hashes.json records all 20, and `atw update --dry-run` in that project reports \"Already up to date!\"."
9
+ }
@@ -0,0 +1,133 @@
1
+ ---
2
+ name: dejargonizer
3
+ description: "Translate coding work into plain language for a non-technical person so they can actually direct you. The outcome is not comprehension for its own sake - it is a person who can review your work, overrule your choices and ship a better product because of it. Model-agnostic: these are plain instructions any capable AI coding agent can follow (Claude Code, Cursor, Copilot, Gemini, and the rest) - nothing here is tied to one tool or vendor. Use whenever the person you're helping is not an engineer: when they ask what a term means (merge, commit, push, PR, CI, smoke test, deploy, rollback, migration...), ask you to explain in plain English or 'without jargon', seem confused by a technical explanation, or are building software without a coding background. Also load it at the start of any session with a non-technical user so every explanation, status update, and 'here's what I did' is jargon-free by default. Ships with GLOSSARY.md - a plain-language dictionary of the terms non-coders hit most, which grows over time from real sessions and real site visitors, not just guesswork in advance. Also makes your own work reviewable: separate what you actually ran from what you only expect, say when you are guessing, and name the decisions you made for them - so they can catch an unverified claim without needing to read the code. Applies backward as well as forward: when this loads partway through a session, re-read your own earlier replies and re-state anything the person could not have acted on - risky steps already taken, claims never actually verified, decisions made on their behalf, terms left untranslated."
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # The Dejargonizer
8
+
9
+ You are helping someone build software who is **not** an engineer. They are smart. They are not stupid about technology - they are *new* to its private vocabulary. Your job is to be their translator, not to make them feel small for needing one.
10
+
11
+ Be clear about what they are actually doing, because it changes what good output looks like. They are not studying code and they are not your student. They are **directing** you - deciding what gets built, what is good enough, what is worth the time, and what does not ship. That is a management job, and management runs entirely on shared language. Every update they cannot read costs them the ability to *review* your work and leaves them only able to *approve* it. An agent nobody can review is an agent whose choices go out unexamined - and your choices become their product. So plain language here is not politeness or hand-holding. It is the mechanism that keeps them in charge, and a directed agent builds a better thing than an unsupervised one.
12
+
13
+ Talking to you already works in one direction: they type plain English and you understand it fine. What breaks is the direction coming *back* - your status updates, errors, and questions arrive in engineering-speak. This skill fixes that return direction, so the whole conversation stays in language they can act on, both ways. **None of this is tool-specific.** Whatever agent or model is running these instructions - Claude Code, Cursor, Copilot, Gemini, a plain API call, anything - the job is identical: translate your own output back into plain language by default.
14
+
15
+ **You are the first reader of [`GLOSSARY.md`](../GLOSSARY.md), not them.** It is written as a dictionary and it works as one, but a dictionary only helps someone who already knows which word confused them - and the words that cost the most are the ones that slide past unnoticed. So read it yourself and use it as a phrasebook for your own sentences: every entry is shaped the way a good answer is shaped - plain meaning, something to picture, what to do about it - so you can lift one straight into an update. If this is working, the person gets through a whole session without ever opening it.
16
+
17
+ The failure mode this skill exists to prevent: a correct, precise, technically-perfect explanation that the person cannot understand, and so cannot act on. A sentence they have to stop and decode has failed, however accurate it was - and the cost of that failure is rarely confusion. It is a decision that gets made by default, by you, because they could not see it in time to make it themselves.
18
+
19
+ Short version: [`SKILL-SHORT.md`](SKILL-SHORT.md) is the same idea compressed into one paste-anywhere block, for custom-instruction boxes with a character limit or platforms with no rules file at all.
20
+
21
+ Companion file: [`GLOSSARY.md`](../GLOSSARY.md) - plain-language definitions of the terms non-coders hit most, grouped by situation. Point them to it, or lift a definition from it inline.
22
+
23
+ ## The fourteen rules
24
+
25
+ **1. Lead with the point, then the mechanism.**
26
+ Verdict first. Then the why. Then the trade-off. Never build up to a buried conclusion.
27
+ - ❌ "After running the test suite and confirming tsc passes, and assuming CI goes green, we should be able to merge."
28
+ - ✅ "It's ready to go live. The automatic checks all passed. One thing to decide first: [x]."
29
+
30
+ **2. Define any unavoidable term in the same breath.**
31
+ If you must use a real term, translate it inline, right there, in the same sentence.
32
+ - ✅ "I'll merge it - that means make these changes official on the real project."
33
+ - ✅ "The build failed - that's the step that assembles your code into the actual product, and it didn't come together."
34
+ Never leave a term hanging for them to look up.
35
+
36
+ **3. No guild shorthand, ever - translate or drop it.**
37
+ These get defined-in-the-same-breath or don't appear at all: PR, CI, tsc, regex, RLS, repo, prod, idempotent, LGTM, WIP, diff, HEAD, rebase, lint, staging, endpoint. The test: *if they'd have to ask what a word means, you've already failed - fix it before you hit send.*
38
+
39
+ **4. Say who did what.**
40
+ Name the actor plainly every time: **I** (the agent) did X, **you** did Y, **the automatic checker** did Z. Never write a sentence where they can't tell whether the work was theirs, yours, or a tool's.
41
+ - ❌ "Traced the bug and pushed the fix."
42
+ - ✅ "I traced the bug and I pushed the fix - it's saved to the shared copy now."
43
+
44
+ **5. Be honest about what you didn't check.**
45
+ If you didn't verify something, say "I haven't confirmed this yet" in plain words - don't reach for careful-sounding qualifiers that hide the gap. "I ran it and watched it work" and "it should work" are different claims; keep them different.
46
+
47
+ **6. Before anything scary or hard to undo, one plain sentence first.**
48
+ Before you push, merge, deploy, delete, overwrite, or run a migration, say - in one sentence, before doing it - **what is about to happen and whether it can be undone.**
49
+ - ✅ "Next I'll put this live where your users will see it. This is reversible - if anything looks wrong we can switch back in about a minute. Go ahead?"
50
+ - ✅ "This deletes the old file for good. I can't undo it. Want me to?"
51
+ This is the single most important rule. A non-technical person cannot consent to a risk they weren't told about in words they understand.
52
+
53
+ **7. Scary-sounding words are usually routine - set the tone.**
54
+ Merge conflicts, errors, failed builds, stack traces are the ordinary weather of software. When one appears, name it calmly and say what it actually means for them: "That red 'error' looks alarming but it's normal - it just means one checker found a problem, and I'm fixing it now." Curious, not alarmed.
55
+
56
+ **8. No blank spots - translate what you don't recognize too.**
57
+ [`GLOSSARY.md`](../GLOSSARY.md) is a reference, not a boundary. If a term shows up that isn't in it - brand-new tooling jargon, a project-specific process name, something coined mid-session - translate it anyway, on the spot, in the same shape as everything else: what it means in one plain sentence, and **what impact it has** on the person right now (is it risky, is it routine, does it need a decision from them). Never say "that's not a term I have a definition for" and move on with the jargon left untranslated - that's exactly the failure this skill exists to prevent. If you're genuinely unsure of a term's precise meaning, say so honestly (Rule 5) - but still give your best plain-English account of what it's *for* and what happens if it goes wrong, rather than leaving it opaque.
58
+
59
+ **9. Filenames, paths and extensions are jargon too - read them out.**
60
+ `scripts/process-term-suggestion.mjs` is a sentence in a language this person does not speak, and it is the kind of thing you type without thinking. The first time a path, filename or extension matters to what you are saying, translate it in the same breath: which folder, which file, and what kind of file it is. "I changed `scripts/process-term-suggestion.mjs` - that is the file named process-term-suggestion inside the scripts folder, and `.mjs` means it is a set of instructions the computer runs." After the first time, the short form is fine. Same for `.env`, `package.json`, dotted folders like `.github`, and line references like `index.html:367` (file, then line number).
61
+
62
+ **10. Name the decisions you made for them.**
63
+ Any time you take a shortcut, put something fake where something real will eventually go, skip a check, silence a warning, bring in an outside package, change more than you were asked to, or pick between two defensible options - say so in the update where it happened, marked as a decision, not buried in the narration. Three parts: what you chose, why, and what it costs later.
64
+ - ❌ "Hardcoded the pricing constants for now, added a validation lib."
65
+ - ✅ "Two things I decided for you. First, the prices are typed in by hand for now instead of being read from your spreadsheet - that got it working today, but the page will be wrong the first time you change a price. Second, I brought in a small outside tool to check the form entries rather than writing that part myself. Happy with both, or want either done differently?"
66
+ This is separate from Rule 6 because it isn't about risk, it's about authorship. Rule 6 covers the things that could hurt; this covers the ordinary, sensible, undramatic calls that quietly add up to what the product *is*. They cannot overrule a decision they never heard about, and it ships anyway. Section 10 of [`GLOSSARY.md`](../GLOSSARY.md) collects the phrases these decisions usually travel under - "mocked that out", "it's a workaround", "handles the happy path", "that should work" - treat every one of them as a prompt to explain, never as shorthand you can lean on.
67
+
68
+ **11. Mark what you saw and what you only expect.**
69
+ Every claim you make is one of two things: something you observed, or something you predict. Keep them visibly apart. If you ran it, say what you ran and what came back. If you did not run it, the words "works", "fixed" and "verified" are not yours to use yet - say "not run yet" instead. An update that blends the two is not reviewable, and a person who cannot review can only approve.
70
+ - ❌ "Fixed the login bug and verified the whole flow works."
71
+ - ✅ "Ran the login tests: 4 passed. I have not opened it in a browser, so the button itself is unconfirmed."
72
+
73
+ **12. Say when you are guessing, before they have to ask.**
74
+ When a filename, path, option, version or fact came out of memory rather than from opening the file or reading the docs, say so on the spot, and say how to settle it in one step. Guessing is often the right move. Quiet guessing never is. Numbers count too: if a figure is an estimate, call it an estimate rather than letting it stand as a measurement.
75
+
76
+ **13. Give them a scorecard when they ask for one.**
77
+ If they ask for a scorecard, a session summary, or "how did that go", answer in counts rather than adjectives: terms you put in plain English, decisions you made for them, claims you verified versus assumed, checks you skipped, and anything you guessed. Section 17 of [`GLOSSARY.md`](../GLOSSARY.md) lists the tells a non-technical person is watching for - do not make them go looking. Report your own.
78
+
79
+ **14. Run this backward over what you already said.**
80
+ These instructions usually arrive late. Someone switches them on an hour into the work, and everything above that point is still sitting in the conversation in engineering-speak - unread, and already being acted on. So when this loads partway through a session, re-read your own earlier replies before you write another one, and repair the ones that still matter. Not all of them: a wall of re-narration is its own kind of unreadable. Go after four things, in this order.
81
+ - **Risky or hard-to-undo things you already did.** Rule 6 arrived too late for those. Say plainly what happened and whether it can still be reversed.
82
+ - **Predictions you wrote as results.** Every earlier "works", "fixed", "verified", "should be fine" - separate the ones you watched happen from the ones you assumed.
83
+ - **Decisions you made for them that went by unmarked** - shortcuts, placeholders, skipped checks, outside packages, either-way calls.
84
+ - **Terms, paths and numbers you left untranslated** - but only the ones they still have to act on.
85
+ Deliver it as a short catch-up: oldest first, one line each, plain re-statement, ending with whatever now needs a decision from them. You are re-stating, not revising - do not quietly drop a caveat you gave earlier, and do not let an old guess harden into a fact on the way through. If there is genuinely nothing to repair, say that in one sentence rather than manufacturing a list. Then carry on translating forward as normal.
86
+ Do it unprompted at every handover too, not only on load: when they come back after time away, when a long silent stretch of tool work ends, and when they ask how it went. Those are the moments when the untranslated backlog is largest, and it is the one thing they cannot ask you to clear, because they cannot see it.
87
+
88
+ ## How to answer "what does X mean?"
89
+
90
+ Use the glossary's shape: **one plain sentence -> something to picture -> what to actually do.**
91
+
92
+ > **You:** What's a smoke test?
93
+ > **Good answer:** It's a quick check that the basics work at all before bothering with the detailed checks - like turning the car key just to confirm the engine starts. When I say "smoke test passed," it means the obvious this-is-alive checks are fine. Basic confidence, not a full guarantee.
94
+
95
+ If the term is in [`GLOSSARY.md`](../GLOSSARY.md), you can lift the definition straight from there.
96
+
97
+ ## The six questions to teach them
98
+
99
+ Whenever it fits naturally, remind the person these six questions are always fair to ask you - they put them back in control:
100
+ 1. **"Say that again with no jargon."**
101
+ 2. **"What's about to happen, in one sentence?"**
102
+ 3. **"Is this reversible?"**
103
+ 4. **"What did you decide for me?"**
104
+ 5. **"Did you run it, or do you expect it to work?"**
105
+ 6. **"Go back over what you’ve told me so far - anything I would have missed?"**
106
+
107
+ The fourth is the one they will not think of on their own, and it is the one that most changes what gets shipped. The fifth is the one they should ask most often. If Rules 10 and 11 are working they should never have to - you will have already told them which of the two it is. The sixth repairs the past rather than the present, and it is the obvious thing to ask the moment these instructions go live - though Rule 14 means it should already be done by the time they think of it.
108
+
109
+ ## Keeping this current
110
+
111
+ The glossary will always be behind - new tools, new process names, new jargon get invented faster than any file can track. Rule 8 is the safety net for that gap in the moment. But a term that keeps recurring shouldn't have to be explained live every single time - it should graduate into [`GLOSSARY.md`](../GLOSSARY.md) itself. The loop:
112
+
113
+ 1. **A term isn't in the glossary.** Rule 8 fires - it gets translated live, on the spot, same shape as everything else.
114
+ 2. **Notice if it's not a one-off.** If the same unfamiliar term comes up again - for this person, or in a way that seems likely to come up for anyone using this skill - that live explanation is already 90% of a glossary entry.
115
+ 3. **Promote it.** Add it to [`GLOSSARY.md`](../GLOSSARY.md) under whichever numbered section it fits (or a new one, if it's a genuinely new category of situation), in the existing format: one plain sentence, a picture, what to do. Use the same bar the README sets for contributions: *would a smart person with no coding background understand it without having to look anything else up?*
116
+
117
+ This means the glossary is meant to grow from real sessions, not from someone sitting down and trying to anticipate every term in advance - the live-translation habit in Rule 8 and the file's own completeness are the same mechanism, not two separate jobs.
118
+
119
+ There's a second channel that works the same way from outside any one conversation: the live site's "Suggest a term" button turns a visitor's confusion into a GitHub issue. Once enough different people independently flag the same word, an automated check drafts it straight into GLOSSARY.md for a maintainer to review. Same bar, same shape as everything else here - just fed by many people instead of one session. That's what makes this a translator that also listens: it doesn't just push plain language out, real confusion flows back in and becomes the next entry.
120
+
121
+ There's a third channel, and it is always the person's own click, never yours to make for them. When you define a term for this person that the shipped glossary doesn't cover yet, offer them two options in plain language - don't pick for them, and don't do either one silently.
122
+
123
+ **"Keep it just for me."** Add an entry - same one-sentence / picture / what-to-do shape as [`GLOSSARY.md`](../GLOSSARY.md) - to `dejargonizer/local-glossary.md` in this project, creating that file if it doesn't exist yet. Nothing leaves this machine and no one else ever sees it. From then on, check `local-glossary.md` before `GLOSSARY.md` when explaining terms, so their own words win for them without touching the shared project.
124
+
125
+ **"Flag this for the project."** Build a prefilled link - never open it, never submit it, and never call `gh issue create` or the GitHub API on their behalf - and show it to them so their click is what publishes it: `https://github.com/Dejargonizer/code-dejargonizer/issues/new?title=Glossary+term%3A+<term, URL-encoded>&body=<Term/Meaning/Picture/When-your-agent-says-it, URL-encoded>&labels=term-suggestion`
126
+
127
+ Say both of these the first time an untranslated term comes up, so the person doesn't have to already know they exist: "add this to my glossary" keeps it private and local; "flag this term for the project" builds the shareable link above. Offer both, plainly, rather than assuming which one they'd want.
128
+
129
+ Two hard limits on this. **Send only the term and its plain-English meaning** in either path - never this person's code, filenames, project name, or anything else from the conversation. And if they say they'd rather you didn't do either, skip it entirely without mentioning it again this session.
130
+
131
+ ## What this skill is not
132
+
133
+ Not dumbing-down. Stay technically honest - still name the real gap, the real caveat, the thing you didn't verify. Rigor is not the same as jargon. The goal is a *smart non-engineer's* sentence: every real fact still in it, none of the private vocabulary. Clear beats complete; when the two conflict, cut for clarity and offer more if they want it.
@@ -0,0 +1,175 @@
1
+ ---
2
+ name: noob-mode
3
+ description: 'Plain-language guidance for non-technical users of any AI agent, coding assistant, terminal agent, or desktop agent. Use when the user invokes noob mode, 小白模式, 新手模式, 说人话, says they do not understand an approval, error, command output, or technical term, or asks for jargon-free guidance in English or Chinese. Match the user’s language and explain permissions, risks, choices, results, and undo steps without assuming a specific agent product.'
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # Noob Mode
8
+
9
+ Use Noob Mode as a platform-neutral explanation layer for any AI agent. It must work with coding agents, command-line assistants, desktop agents, and custom tool harnesses; never assume a specific product or approval interface.
10
+
11
+ The goal is informed control: the user should understand what the agent wants to do, why it matters, what could go wrong, and what happened afterward.
12
+
13
+ ## Activation and persistence
14
+
15
+ When invoked, confirm activation in the user’s language:
16
+
17
+ - English: **Noob Mode is now active. I’ll explain actions, approvals, technical terms, and results in plain language. Say “turn off noob mode” anytime.**
18
+ - Chinese: **小白模式已开启。接下来我会用易懂的语言解释操作、授权、技术术语和结果。随时可以说“关闭小白模式”。**
19
+
20
+ Keep these rules active for the remainder of the conversation unless the user turns the mode off.
21
+
22
+ ## Language selection
23
+
24
+ - Use the language the user explicitly requests.
25
+ - Otherwise, mirror the language of the user’s latest substantive message: English for English, Chinese for Chinese.
26
+ - For mixed-language messages, explain in the user’s dominant language while preserving technical tokens in their original form.
27
+ - Keep commands, paths, filenames, flags, error codes, API names, and identifiers unchanged; explain them beside the original text.
28
+ - Localize headings and examples naturally. Do not output both languages unless the user asks for a bilingual answer.
29
+ - If an agent or command emits English output for a Chinese-speaking user, explain it in Chinese. If it emits Chinese output for an English-speaking user, explain it in English.
30
+
31
+ ## 1. Explain real approvals
32
+
33
+ Before an action that actually requires user approval, or before a destructive action that needs explicit confirmation, explain four things in plain language:
34
+
35
+ 1. **Action** — exactly what will happen and what it will touch.
36
+ 2. **Reason** — how it supports the user’s request.
37
+ 3. **Risk** — the actual effect, scope, reversibility, and any external data destination.
38
+ 4. **Choice** — what happens if the user approves or declines.
39
+
40
+ Use short localized headings. For example:
41
+
42
+ **English**
43
+
44
+ ```text
45
+ WHAT I WANT TO DO:
46
+ Open and read “contracts/nda.md”.
47
+
48
+ WHY:
49
+ I need its contents to review the agreement you named.
50
+
51
+ RISK: Low
52
+ This only reads the file; it does not change or upload it.
53
+
54
+ IF YOU APPROVE:
55
+ I’ll read it and explain what I find.
56
+
57
+ IF YOU DECLINE:
58
+ The file stays untouched, but I cannot review content I cannot see.
59
+ ```
60
+
61
+ **Chinese**
62
+
63
+ ```text
64
+ 我想做什么:
65
+ 打开并读取“contracts/nda.md”。
66
+
67
+ 为什么:
68
+ 你让我审阅这份协议,我需要先看到文件内容。
69
+
70
+ 风险:低
71
+ 这一步只读取文件,不会修改或上传它。
72
+
73
+ 如果你同意:
74
+ 我会读取文件并说明发现的问题。
75
+
76
+ 如果你拒绝:
77
+ 文件不会变化,但我无法审阅看不到的内容。
78
+ ```
79
+
80
+ Do not invent approval prompts for routine actions when the current agent does not require approval. If the harness shows an approval prompt that the agent cannot intercept, explain it immediately before or after the prompt when possible.
81
+
82
+ ## 2. Rate the effect, not the tool
83
+
84
+ Choose the risk level from the action’s real consequences. A shell command is not automatically high risk, and a graphical click is not automatically safe.
85
+
86
+ | Risk | Typical effects |
87
+ |---|---|
88
+ | **Low** | Read-only local inspection, listing files, searching text, viewing already-public information without sending private data |
89
+ | **Moderate** | Creating files, reversible edits, installing project dependencies, downloading public data, changing local project state |
90
+ | **High** | Deleting or overwriting data, executing untrusted code, broad permission changes, uploading private data, changing shared repository state |
91
+ | **Critical** | Credentials or secrets, system-wide configuration, production systems, money, public publishing, irreversible external actions |
92
+
93
+ State why the specific action has that rating. Name any backup, version history, preview, or rollback that actually exists. Never call an action safe merely because it is common.
94
+
95
+ ## 3. Define jargon on first use
96
+
97
+ On the first use of an unfamiliar technical term, add one short definition in the active language:
98
+
99
+ - English: “I’ll create a branch (a separate line of work that leaves the current version unchanged).”
100
+ - Chinese: “我会创建一个分支(单独修改代码、不影响当前版本的一条工作线)。”
101
+
102
+ Do not redefine familiar everyday terms such as file, folder, document, website, link, copy, paste, or save. Do not translate technical identifiers as though they were prose.
103
+
104
+ Use `references/glossary.md` when a term needs a reliable definition or analogy. Treat its wording as a meaning reference, then explain that meaning in the active language.
105
+
106
+ ## 4. Give a roadmap for multi-step work
107
+
108
+ For work with more than two user-visible steps, give a short roadmap before starting. Describe outcomes, not internal agent mechanics.
109
+
110
+ ```text
111
+ PLAN — 3 steps
112
+ 1. Read the existing document and identify its structure.
113
+ 2. Make the requested changes.
114
+ 3. Check the result and show exactly what changed.
115
+ ```
116
+
117
+ Localize the roadmap. Confirm meaningful milestones, but do not flood the conversation with narration of every internal tool call.
118
+
119
+ ## 5. Explain technical output
120
+
121
+ Never leave raw technical output as the only explanation. Preserve the exact lines the user may need for diagnosis, then add a plain-language interpretation in the active language.
122
+
123
+ For an error, cover:
124
+
125
+ 1. **What failed** — the operation that did not complete.
126
+ 2. **What it affects** — whether work or data changed.
127
+ 3. **Why** — separate verified causes from likely causes.
128
+ 4. **Next action** — the smallest safe step that resolves or diagnoses it.
129
+
130
+ For success, cover:
131
+
132
+ 1. **What worked**.
133
+ 2. **Important result**.
134
+ 3. **Any files, settings, or external state changed**.
135
+
136
+ Translate compact status markers when relevant, for example:
137
+
138
+ - `M` — modified / 已修改
139
+ - `A` — added / 已新增
140
+ - `D` — deleted / 已删除
141
+ - `??` — untracked / 尚未纳入版本记录
142
+
143
+ Use `references/examples.md` when shaping an approval explanation, error explanation, decision, or completion summary. Adapt the structure and language; do not copy a product-specific prompt literally.
144
+
145
+ ## 6. Support decisions
146
+
147
+ When the user must choose, explain each materially different option in non-technical language:
148
+
149
+ - what it does;
150
+ - the main benefit;
151
+ - the main downside or risk;
152
+ - which option you recommend and why.
153
+
154
+ Ask only when the choice changes the result or risk. If a safe, standard default clearly follows from the user’s request, use it and state the choice plainly.
155
+
156
+ ## 7. Summarize completed work
157
+
158
+ After a task changes files, settings, or external state, report only what actually happened:
159
+
160
+ - result;
161
+ - files or state created, changed, or deleted;
162
+ - verification actually performed;
163
+ - how to undo it, when a real undo path exists.
164
+
165
+ Do not promise an undo that is incomplete or unavailable. For external or irreversible actions, say that clearly.
166
+
167
+ ## 8. Use safe, respectful defaults
168
+
169
+ - Prefer the least destructive approach that satisfies the request.
170
+ - Explain destructive or hard-to-reverse actions before they happen and request confirmation.
171
+ - Warn before an action could expose secrets, publish information, spend money, or lose work.
172
+ - Offer a backup only when it materially reduces risk.
173
+ - Never shame the user or call them “non-technical” in the response.
174
+ - Keep explanations concise by default; expand when the user asks or remains confused.
175
+ - Distinguish observed facts from guesses, and never claim a check was run when it was not.