Skip to content
cccskills
FreePublished on GitHub

japanese-writing-drafter

When someone corrects the agent’s Japanese wording or style, capture the before-and-after as a pending writing rule proposal for later human review. The skill does not approve proposals or change the active rules dictionary.

OriginalShow the original description

Detect when the operator corrects the agent's Japanese phrasing mid-conversation (rewrites a sentence, calls out a style problem, says 'this wording is bad, say it like X instead') and draft a pending writing-rule proposal into ~/.claude/writing-lint/proposals.jsonl for later human review. This skill is the ONLY writer of proposals.jsonl — it never edits rules.jsonl and never sets status to anything but pending. Promotion to rules.jsonl only happens via the human-run scripts/writing-rule-approve.sh. Use when user mentions writing-rule proposal, 表現を直して, 文体を直して, その言い方はNG, writing lint 提案, 指摘をルール化して. Do NOT load for: approving or rejecting proposals (use scripts/writing-rule-approve.sh), listing pending proposals (use scripts/writing-rule-list.sh), or scanning text against the existing dictionary (the writinglint engine / PostToolUse hook does that).

Chachamaru127/claude-code-harness3,187 stars(GitHub 3,187 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Turn a Japanese phrasing correction into a rule proposal
  • Record a style issue for human review
  • Capture a preferred alternative wording
  • Draft a writing lint proposal from feedback

Files included (1)

  • SKILL.md7.8 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

japanese-writing-drafter

会話内で operator が agent の日本語表現を直したときだけ、その指摘を pending の writing-rule 提案として ~/.claude/writing-lint/proposals.jsonl に追記する。提案の追記のみを行い、承認・却下・rules.jsonl への昇格は一切行わない。

核心契約

  • 書き込みはこの skill 経由のみ: proposals.jsonl に status: pending の行を追記できるのはこの skill だけ。他のどのスクリプト・hook もこのファイルに書き込まない。
  • 自動昇格経路は存在しない: rules.jsonl を更新できるのは人間が手で実行する scripts/writing-rule-approve.sh --id <id> だけ。この skill からも、他のどの hook からも writing-rule-approve.sh を自動起動しない。
  • 1 回の検知につき 1 提案。status は常に "pending" で書く。

トリガー条件

会話の中で、次のいずれかが起きたときだけ発動する(雑談・通常の作業指示では発動しない)。

  • operator が直前の agent 発言・生成物の日本語表現をそのまま書き直した
  • operator が「その言い方はNG」「〜じゃなくて…と書いて」のように文体・言い回しを名指しで指摘した
  • operator が明示的に「これルール化して」「writing-lint に登録して」と言った

手順

  1. before / after を確定する: 直された元の表現 (before) と、operator が示した / 暗に求めた書き直し後の表現 (after) を会話から抽出する。before が具体的な語句・言い回しに絞れないほど曖昧なら、提案せずに終える(無理に一般化しない)。
  2. pattern を作る: before の該当フラグメントを Go 正規表現 (RE2) として書く。特殊文字はエスケープする。ヒット範囲を広げすぎない(writing-rule.v1 の pattern は文全体ではなく該当箇所のみでよい)。
  3. good を作る: after をそのまま、または要点を保った短い言い換えとして書く。
  4. scenes を決める: 会話の文脈から分かるときだけ ["external"] / ["chat"] / ["docs"] 等を付ける。不明なら省略する(省略は「全シーン適用」の意味になる。無理に推測しない)。
  5. id を作る: 内容が分かる kebab-case スラッグに 8 桁の一意サフィックスを付ける(例: no-meta-narration-a1b2c3d4)。
  6. 追記する: 以下のコマンドで templates/schemas/writing-rule-proposal.v1.json に対する手書きバリデーション(必須キー + additionalProperties: false)を通してから 1 行追記する。CLAUDE_WRITING_LINT_PROPOSALS が設定されていればそのパスを、無ければ ~/.claude/writing-lint/proposals.jsonl を使う。
python3 - <<'PY'
import json, os, sys, uuid
from datetime import datetime, timezone

repo_root = "REPO_ROOT"  # 呼び出し時に実際のリポジトリルートへ置き換える
schema_path = os.path.join(repo_root, "templates/schemas/writing-rule-proposal.v1.json")
proposals_path = os.environ.get("CLAUDE_WRITING_LINT_PROPOSALS") or os.path.join(
    os.path.expanduser("~"), ".claude/writing-lint/proposals.jsonl"
)

with open(schema_path, encoding="utf-8") as f:
    schema = json.load(f)

record = {
    "id": "SLUG-" + uuid.uuid4().hex[:8],
    "pattern": "PATTERN_HERE",
    "good": "GOOD_HERE",
    "status": "pending",
    "evidence": "EVIDENCE_HERE",
    "created_at": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
}
# scenes / severity は分かるときだけ足す:
# record["scenes"] = ["external"]
# record["severity"] = "warning"


def validate(data, sch):
    required = set(sch.get("required", []))
    props = sch.get("properties", {})
    if sch.get("additionalProperties") is False:
        extra = set(data.keys()) - set(props.keys())
        if extra:
            raise ValueError(f"additional properties not allowed: {sorted(extra)}")
    for key in required:
        if key not in data:
            raise ValueError(f"missing required property: {key}")


validate(record, schema)

os.makedirs(os.path.dirname(proposals_path) or ".", exist_ok=True)
with open(proposals_path, "a", encoding="utf-8") as f:
    f.write(json.dumps(record, ensure_ascii=False) + "\n")

print(f"drafted pending proposal: {record['id']}")
PY
  1. operator に伝える: 追記した id と、確認・承認コマンド (scripts/writing-rule-list.sh / scripts/writing-rule-approve.sh --id <id>) を短く伝える。承認するかどうかは operator の判断であり、この skill は待たない。

関連

  • 承認 / 却下: scripts/writing-rule-approve.sh --id <id> (--reject で却下)
  • pending 一覧: scripts/writing-rule-list.sh
  • スキーマ: templates/schemas/writing-rule-proposal.v1.json (提案) / templates/schemas/writing-rule.v1.json (承認後のルール)
  • スキャンエンジン: go/internal/writinglint/ (Phase 135.1)

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

agent-browser

FreeSummary

Use the agent-browser CLI to navigate web pages, inspect interactive elements, fill forms, capture screenshots, and collect page information. It helps check web app behavior through browser actions and snapshots.

  • Navigate a page and inspect its current state
  • Fill and submit a web form
  • Capture a screenshot for a UI check
Chachamaru127/claude-code-harness3.2KUpdated Oct 26, 2026

breezing

FreeSummary

Run planned work through a team workflow: delegate implementation to workers, coordinate independent review and revisions, then report the outcome. Select a task range or backend, or run all unfinished tasks in one command.

  • Run all unfinished planned tasks
  • Delegate a selected task range
  • Request implementation through the Codex or Cursor backend
Chachamaru127/claude-code-harness3.2KUpdated Oct 26, 2026

breezing

FreeSummary

Run planned software tasks as a coordinated team workflow. It assigns ready tasks to isolated workers, performs per-task and integrated reviews, incorporates approved changes, and reports progress and completion. Worker execution can use the selected backend, including optional Cursor delegation.

  • Run all remaining planned tasks as a team
  • Delegate a selected task range to workers
  • Use Cursor for worker implementation
Chachamaru127/claude-code-harness3.2KUpdated Oct 26, 2026

cc-update-review

FreeSummary

Review changes that integrate Claude Code or Codex updates. Classify each new Feature Table entry as implemented, inherited upstream, or tracked in Plans, and flag entries that are only documented without supporting work.

  • Review a Claude Code or Codex update integration
  • Check new Feature Table entries against implementation
  • Confirm future work is recorded in Plans
Chachamaru127/claude-code-harness3.2KUpdated Oct 26, 2026

ci

FreeSummary

Diagnose failed CI runs by reviewing logs, reproduction details, specifications, and recent commits. Identify whether the cause lies in implementation, tests, or the environment, then make authorized fixes without hiding failures by skipping checks.

  • Find the cause of a failed CI run
  • Trace a build error to a recent commit
  • Fix implementation issues behind failing tests
Chachamaru127/claude-code-harness3.2KUpdated Oct 26, 2026

cursor-ask

FreeSummary

Send a question, investigation, or design discussion to cursor-agent in read-only ask mode. It returns a second opinion or evidence-based findings that the host agent summarizes, without making file changes or running implementation work.

  • Ask for a second opinion on a design decision
  • Investigate code or configuration and request supporting evidence
  • Get an adversarial sanity check on a proposed change
Chachamaru127/claude-code-harness3.2KUpdated Oct 26, 2026

See all skills by Chachamaru127

Report a problem with this skill