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 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kotonoha",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "A GitHub Copilot CLI skill for structuring and polishing technical documents.",
5
5
  "license": "MIT",
6
6
  "author": "nahisaho",
@@ -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–§4 workflow, starting with the intake loop in §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 (§5).
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–§4 in the same turn to produce the
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. Doctype checklist summary
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,