kotonoha 0.1.1 → 0.1.2
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/CHANGELOG.md +12 -0
- package/README.md +4 -0
- package/package.json +1 -1
- package/skills/tech-writer/SKILL.md +51 -4
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,17 @@ All notable changes to this project are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.1.2] - 2026-09-29
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Add a mandatory rubber-duck review loop to `write` mode. Generated
|
|
13
|
+
documents are revised, structurally rechecked, and reviewed again until
|
|
14
|
+
no actionable findings remain.
|
|
15
|
+
- Distinguish a missing independent reviewer (`review not performed`) from
|
|
16
|
+
a review that reaches its round limit with unresolved findings
|
|
17
|
+
(`review did not converge`).
|
|
18
|
+
|
|
8
19
|
## [0.1.1] - 2026-09-28
|
|
9
20
|
|
|
10
21
|
### Added
|
|
@@ -31,5 +42,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
31
42
|
- Add structural linting for headings, code fences, placeholders, and
|
|
32
43
|
suspicious links.
|
|
33
44
|
|
|
45
|
+
[0.1.2]: https://github.com/nahisaho/kotonoha/compare/v0.1.1...v0.1.2
|
|
34
46
|
[0.1.1]: https://github.com/nahisaho/kotonoha/compare/v0.1.0...v0.1.1
|
|
35
47
|
[0.1.0]: https://github.com/nahisaho/kotonoha/releases/tag/v0.1.0
|
package/README.md
CHANGED
|
@@ -22,6 +22,10 @@ Japanese prose with natural-japanese.
|
|
|
22
22
|
descriptions/commit messages/issue reports, release notes, user manuals,
|
|
23
23
|
code comments, and Qiita/Zenn articles
|
|
24
24
|
- Doctype-specific structure and checklists to guide writing
|
|
25
|
+
- Iterative rubber-duck review after document creation, with fixes and
|
|
26
|
+
re-review until no actionable findings remain; unavailable reviews are
|
|
27
|
+
reported as `review not performed`, while unresolved review loops are
|
|
28
|
+
reported as `review did not converge`
|
|
25
29
|
- `scripts/lint.py` for mechanical structural checks (heading-level skips,
|
|
26
30
|
code blocks missing a language tag, leftover placeholders, suspicious
|
|
27
31
|
links, etc.); pass `--atomic` for commit messages, PR descriptions, issue
|
package/package.json
CHANGED
|
@@ -62,9 +62,12 @@ first, then hand Japanese prose to natural-japanese for polish.
|
|
|
62
62
|
Infer the mode from the argument or the request:
|
|
63
63
|
|
|
64
64
|
- `write` (default): new document, or restructuring a draft. Runs the full
|
|
65
|
-
§1–§
|
|
65
|
+
§1–§5 workflow, starting with the intake loop in §1 and ending only after
|
|
66
|
+
the rubber-duck review loop has no remaining actionable findings. If an
|
|
67
|
+
independent review cannot run or cannot converge, returns the explicit
|
|
68
|
+
review status required by §5 instead of claiming a clean review.
|
|
66
69
|
- `review`: structural review of an existing document. Does not rewrite;
|
|
67
|
-
reports the gap against the doctype checklist (§
|
|
70
|
+
reports the gap against the doctype checklist (§6).
|
|
68
71
|
- `score`: structure-only quick diagnostic. Runs
|
|
69
72
|
`scripts/lint.py --json <file>` and summarizes the findings (no rewrite).
|
|
70
73
|
|
|
@@ -110,7 +113,7 @@ hand the user a checklist to fill in. Instead:
|
|
|
110
113
|
one-line note) and move on.
|
|
111
114
|
6. **Once complete, do not ask the user to compose anything.** Synthesize
|
|
112
115
|
the gathered answers into the best possible generation approach yourself
|
|
113
|
-
and immediately continue into §2–§
|
|
116
|
+
and immediately continue into §2–§5 in the same turn to produce the
|
|
114
117
|
document. Skip further confirmation unless the doctype is release-facing
|
|
115
118
|
and consequential (e.g. a public release note with breaking changes) or
|
|
116
119
|
the user explicitly asked to see a plan first.
|
|
@@ -221,7 +224,51 @@ step 2 as the primary check for those.
|
|
|
221
224
|
4. **Reader-goal recheck**: confirm the "what the reader can do after
|
|
222
225
|
reading" outcome from §1 is actually achievable from this document alone.
|
|
223
226
|
|
|
224
|
-
## 5.
|
|
227
|
+
## 5. Rubber-duck review loop — write mode only
|
|
228
|
+
|
|
229
|
+
After the structural review in §4, use the host's subagent mechanism to
|
|
230
|
+
launch an independent reviewer in the `rubber-duck` role to challenge the
|
|
231
|
+
completed document for meaningful problems that the authoring pass may have
|
|
232
|
+
missed. Prefer a registered `rubber-duck` agent when the host provides one;
|
|
233
|
+
otherwise use an independent general-purpose or critic-style subagent with
|
|
234
|
+
the same review prompt. Treat the reviewer as unavailable only when the host
|
|
235
|
+
has no independent subagent mechanism. Do not substitute the author's own
|
|
236
|
+
self-review: independence is the point of this pass. This loop is mandatory
|
|
237
|
+
for `write` mode; do not run it for `review` or `score` mode.
|
|
238
|
+
|
|
239
|
+
1. **Start the review with full context**: give the reviewer the target file,
|
|
240
|
+
doctype, intended reader, one-sentence reader outcome from §1, and any
|
|
241
|
+
explicit constraints or assumptions. Ask it to report concrete,
|
|
242
|
+
actionable problems in correctness, logic, missing information, reader
|
|
243
|
+
flow, examples, and stated limitations — not cosmetic preferences.
|
|
244
|
+
2. **Resolve every valid finding**: edit the document rather than merely
|
|
245
|
+
listing proposed fixes. If a finding conflicts with a stated requirement
|
|
246
|
+
or is factually inapplicable, record a one-line reason for declining it.
|
|
247
|
+
3. **Re-run the relevant checks after each edit round**: repeat the doctype
|
|
248
|
+
checklist and structural lint from §4 before asking for another
|
|
249
|
+
rubber-duck review. A fix must not introduce a new structural defect.
|
|
250
|
+
4. **Review again with the prior decisions**: reuse the same reviewer context
|
|
251
|
+
when supported. Otherwise, include the previous findings, applied fixes,
|
|
252
|
+
and declined findings with their reasons in every new review prompt. Ask
|
|
253
|
+
specifically for unresolved or newly introduced actionable findings.
|
|
254
|
+
5. **Use a bounded convergence rule**: allow at most five rubber-duck rounds
|
|
255
|
+
for a living, multi-section document. For an atomic artifact, run one
|
|
256
|
+
round and finish immediately if it is clean; only continue after an
|
|
257
|
+
actionable finding, with a maximum of three rounds. A round is clean only
|
|
258
|
+
when no unaddressed actionable correctness, logic, completeness,
|
|
259
|
+
reader-flow, example, or limitation findings remain. A finding declined
|
|
260
|
+
with a recorded requirement-based or factual reason is a resolved
|
|
261
|
+
exception rather than an open finding. If another round runs, supply that
|
|
262
|
+
exception back to the reviewer under step 4. Purely cosmetic preferences
|
|
263
|
+
are not actionable.
|
|
264
|
+
6. **Report non-clean outcomes precisely**: if the host has no independent
|
|
265
|
+
reviewer, label the result `review not performed` and do not claim the
|
|
266
|
+
rubber-duck pass completed. If the round limit is reached with
|
|
267
|
+
unaddressed actionable findings, or findings oscillate between
|
|
268
|
+
contradictory requirements, label it `review did not converge` and
|
|
269
|
+
include the latest unresolved findings and fixes already attempted.
|
|
270
|
+
|
|
271
|
+
## 6. Doctype checklist summary
|
|
225
272
|
|
|
226
273
|
See each reference file for detail. The items below are for living,
|
|
227
274
|
multi-section documents (README, design doc, API reference, release notes,
|