Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add kurone-kito/idd-skill --skill issue-authoringgit clone --depth 1 https://github.com/kurone-kito/idd-skillWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/kurone-kito/idd-skill/issue-authoring)<a href="https://agentmods.dev/skills/kurone-kito/idd-skill/issue-authoring"><img src="https://agentmods.dev/badge/skills/kurone-kito/idd-skill/issue-authoring/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/kurone-kito/idd-skill/issue-authoring"><img src="https://agentmods.dev/badge/skills/kurone-kito/idd-skill/issue-authoring.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 2 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Prompt Injection · line 62 Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.Fix: Audit all comments and invisible characters. Remove any instructions that direct the agent to perform unauthorized actions. Use plain, reviewable content.
- high Prompt Injection · line 147 Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.Fix: Audit all comments and invisible characters. Remove any instructions that direct the agent to perform unauthorized actions. Use plain, reviewable content.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00071 | $0.06653 |
| Opus 5.5 | $0.00028 | $0.02661 |
| Sonnet 5.5 | $0.00014 | $0.01331 |
| Haiku 4.5 | $0.00007 | $0.00665 |
Grade A, and why
issue-authoring scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 472 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Issue Authoring
Use this skill to prepare issue-ready work before execution starts. Keep the skill concise and treat the repository docs as the canonical source for the full contract and schema. The canonical source bundle lives in this repository; install copies in the agent-specific skill directory your runtime reads.
Stable Phases
Use two stable phases:
- Intake and Clarification — inspect relevant context, identify
ambiguity, run a secondary critique or explicit self-critique, and
ask only the questions that block safe issue drafting; for an
interactive choice, the question blocks publishing, so it is asked (see
Human-dependency isolation).
Keep clarification bounded; use the repository-local
issueAuthoring.maxClarificationRoundsvalue when available, otherwise default to 3 rounds. Under-clarification stop rule: if, after bounded clarification, you still cannot name the concrete surface to edit or an objective verification for a candidate task, route it toneeds-decision, or for an interactive choice ask first under Human-dependency isolation — do not publish a confidently-vaguereadyissue. Reliability over speed. - Decompose and Draft — restate the request in implementation terms, split it into atomic tasks, classify readiness, reuse existing issues when safe, and draft the smallest issue shape that preserves dependencies and reviewability.
Preserve low-readiness work in stable buckets: ready, deferred, needs-decision, blocked-by-human, and out-of-scope.
Workflow
- Read the bundled contract in references/contract.md.
- Reuse or extend an existing issue before creating a new one — but never edit the body of an actively-claimed or open-PR issue (its claimed agent will not pick the change up); cover it with a follow-up issue instead. See the contract's claim-state precondition.
- Choose the smallest safe output shape:
- orphan issue for one ready autonomous task only when the target
repository discovers orphans (
issue-scope: roadmap-first, the default, via the orphan fallback, ororphan-first) and any configuredorphan-first-policyapproval step can be completed after drafting - roadmap plus sub-issues for multi-task or multi-session work
- stable non-ready buckets for deferred, needs-decision, blocked-by-human, or out-of-scope work
- orphan issue for one ready autonomous task only when the target
repository discovers orphans (
- Prefix-first: resolve the target repository's marker prefix
before emitting any authoring marker —
roadmap-id,blocked-by,autopilot-suitability, oreffort. Use the prefix documented by the target repository's onboarding or IDD docs, and ask the user instead of guessing when the prefix is not discoverable. Never default to this source repository'sidd-skillprefix in an installed bundle. - Keep dependencies machine-readable and minimal:
- roadmap identity via
<!-- <marker-prefix>-roadmap-id: ... --> - active child issues via roadmap task-list links
- issue-to-issue dependencies via
Blocked by #NNN - sequential roadmap dependencies via
<!-- <marker-prefix>-blocked-by: ... -->only when a separate roadmap must close first - keep independent sibling work in roadmap task lists unless a true correctness, availability, or ordering constraint requires a dependency edge
- for every hard edge, name the producer output, the blocked operation or criterion, and its evidence; check the counterfactual with other valid prerequisites retained, then verify the set keeps independent siblings and natural cohesion. See the contract for the unchanged packet fields and worked examples.
- roadmap identity via
- Before the completed-draft adversarial review, verify material
factual claims that justify the draft's scope or design against
current sources: repository behavior against current code and docs;
issue or pull-request status and prior decisions against live GitHub
records; and runtime observations under the existing artifact-citation
rule. Correct, qualify, or remove any such unsupported claim, and put support
in the review packet's existing
evidencearray. Route a materially unresolved claim through the existing uncertainty and human-dependency rules:needs-decisionfor unresolved product, policy, or design choices, andblocked-by-humanwhen verification waits on a person, credential, asset, or outside system. The packet schema stays unchanged. This check responds to the factual-history error reported in issue #4566, which concerns issue #3838 and issue #1019. Then run the completed-draft adversarial review on each completed roadmap, child, or orphan draft. This is not the Intake critique above. The packet, checklist, mode table, failure stop, wait ceiling, and no-mutation boundary are normative in Completed-draft adversarial review. Send only the exact title and body plus that bounded packet. Resolveidd-issue-authoring-delegatewhen a helper runtime can run it; the helper does not invoke the command. If the resolver cannot be run, orusableis false, use the agent-native reviewer or a structured self-critique. That is not a failed review. Whenusableis true, the mode isfallback(default),combined,on-success, ornever; union findings when both mechanisms run. A missing command, non-zero exit, timeout, cancellation, or unreadable findings is a failure only afterusable: true. A readable empty list is clean. If no mechanism that ran returns a readable list, do not publish the target: do not create it, update its body, change its label, or append a marker for it. An existing held issue keeps its label and previous body. The drafts go into a carrier markedReview: not reviewed(step 8), unless they already sit in one or one of step 8's two exceptions applies. The reviewer returns findings only. Prefer a non-context-inheriting reviewer; issue #3448 records why a context-inheriting no-mutation dispatch can still publish. Bound the wait withissueAuthoring.adversarialReview.waitCeiling(defaultPT20M) using the caller's own wait and cleanup, and do not wrap the command in a timeout utility. Dispose of every finding. Keep a findings ledger in the session scratchpad, never in the repository, and send eachrejectedfinding that has evidence as apreviously rejected:string in the packet'sevidencearray (carry-forward rule). Review the revised draft again before the linter whenever that revision changes more than wording, including acceptance criteria, candidate files, dependency edges, roadmap task-list or relationship wiring, scope or the proposed change, or the readiness bucket (Disposition). Wording-only edits do not start another review. Audit every revised body before publication. A roadmap shell may be reviewed and published with an empty## Trackslist. Review each child before publishing it. Review the parent again when real child numbers are written into## Tracks, then audit that edit before saving it. - Before publishing a ready orphan, roadmap, or child body, or a draft
carrier (
--shape carrier), run theaudit-authored-issuelinter against it as the mechanical pre-publish gate — see Mechanical pre-publish gate in the bundled contract, including the manual fallback forinstructions-onlyinstalls with no helper runtime. Resolve every reported failure before treating the issue as ready; a carrier is never published without that check, and it has no manual fallback (step 8's second exception applies). Before newly publishing a body into theneeds-decisionorblocked-by-humanbucket instead, also run the linter, passing--expect-bucket <needs-decision|blocked-by-human>(choose the one matching value) — the same gate section's--expect-bucketflag requires the matchingauthoring-bucketmarker for that publish, closing the gap where a non-ready body would otherwise never be audited at all. For everyneeds-decisionlint — initial publication, held-body re-lint, and Stage 2 — pass--expect-bucket needs-decisionand both configured labels. - Publish each
ready,needs-decision, orblocked-by-humanbody directly under the authoring hold once the completed-draft review (step 6) and then the mechanical gate (step 7) have passed. The Intake critique stays the pre-draft pass above and does not replace step 6. No separate publish approval is needed. A reviewed draft does not end in local files only. When its final shape cannot be published under the hold now (the command cannot create it yet, such as a child whose set anchor is not published and held, or the final form waits on something else), publish a draft carrier withpublish-authoring-hold --shape carrier(run it with--apply; the default is a dry run), as Draft carrier defines. A preview request also publishes a carrier, and the drafts are shown in the reply too. When authoring stops before the review completes on a planned stop (context pressure, or the user's instruction to stop), or when the review fails or cannot finish, the target is not published; its drafts go into a carrier markedReview: not reviewed(drafts already in a carrier stay there). Two exceptions keep the drafts local: the user explicitly says not to publish (an instruction not to create any issue, not a request to see the drafts first; the final message says that the drafts are not durable and gives their local paths), or the carrier cannot be published either (no helper runtime,issueAuthoring.journalIssueunset, or a failure before the create; the final message says the same and asks the user where to keep the drafts). A choice that the interactive rule in Human-dependency isolation holds unpublished is a pending question, not a reviewed draft. Manage the authoring label for each created or updated issue:- resolve
issueAuthoring.authoringLabelName, defaulting tostatus:authoring - create the label with
gh label createbefore first use when the target repository does not already have it - treat label creation or application failure as a publishing blocker
- apply the label before updating an existing issue
- for a
review-needs-decisionfollow-up, see the narrow auto-release exception in the contract for its extra label and release rules - acquire per-target ownership before editing an existing issue or roadmap; the shared label is a claim-suppression lock, not an owner token. Follow the append-only owner-marker and re-read protocol in references/workflow-boundary.md and stop without editing when ownership or the target snapshot conflicts
- for a new Stage 1 set, generate one opaque set ID and reuse it in every owner marker for that set; when resuming an interrupted set, recover and verify its persisted set ID from the exact trusted owner markers and reuse it instead of generating a replacement; never infer set membership from the label alone
- when a set includes a parent roadmap, publish a valid roadmap shell under
the authoring hold before any child; acquire and verify that roadmap as
the set anchor, leaving its
## Trackslist empty only until child issue numbers exist. Without a parent roadmap, use the designated lead target as the anchor - acquire and verify the set anchor before publishing or acquiring any child; do not acquire children independently, and stop all edits if any target cannot join that anchor's verified set
- before each child acquisition or resume, append and verify a same-owner anchor heartbeat (or reuse one — see the heartbeat-coalescing rule below), re-fetch the anchor's paginated log, then append the child marker and immediately re-fetch both anchor and child. Stop with the label in place if anchor ownership changed between those reads
- Heartbeat coalescing (
issueAuthoring.heartbeatCoalesceWindow, defaultPT2M): before appending a heartbeat, replay the target's paginated log; reuse the latest trusted marker instead of appending when it is the same owner/set/session, its mode isacquire/bootstrap/resume/heartbeat, it is younger than the window, and itsbody-sha256matches the just-fetched body — re-fetch and verify the reused marker exactly as a fresh one. This window never applies toacquire,bootstrap,resume,release,release-guard, orrelease-completeappends themselves — only aheartbeatappend may be skipped - persist the anchor's canonical repository/issue identity in every owner marker for the set; the anchor marker points to itself, and a resume must stop if the interrupted set's anchor cannot be proven
- immediately before every Stage 1 body or relationship edit, re-fetch both the edited target and the set anchor; require each target's expected owner token independently, plus the same set, anchor, and owning session, and require an unchanged expected target snapshot before editing
- immediately before that edit, renew both generations with a trusted same-owner-per-target heartbeat marker (one marker when target and anchor coincide; reuse applies here too), re-fetch and verify both, and stop if renewal or ownership verification fails
- create new issues only through a capability-checked publication command
that applies the authoring label atomically and carries an exact hidden
publication token for target, anchor, set, and session; if that operation
is unavailable, stop before creating the issue (a carrier cannot be
created either, so the second exception above applies) — never
intentionally create an unlabeled issue. That command is
idd-publish-authoring-hold(node scripts/publish-authoring-hold.mjsin this source repository). It publishes one issue per call: an orphan (the default), a draft carrier (--shape carrier), a roadmap shell (--shape roadmap), or a child (--shape childwith--anchornaming the set anchor's<owner>/<repo>#<number>); see its--helpand the contract's "New-issue ownership" section - the hidden publication token is this exact HTML-first body line.
anchorreuses the opaquetargetvalue only when this new issue is itself the set anchor (self-reference); for a non-anchor child,anchoris instead the set anchor's already-resolved real<owner>/<repo>#<number>reference, not an opaque id (full rule:references/contract.md's "New-issue ownership" section):
- resolve
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago Changed · +15 lines 05d6cdc58b96
- 5d ago Changed · +15 lines e13b4bc09888
- 10d ago Changed · +40 lines e41ac173a905
- 11d ago Changed · +10 lines 3bdb36b7c59e
- 12d ago Changed · +12 lines 231604423185
- 17d ago Changed · +7 lines dd3951533445
- 20d ago Changed · +7 lines 58e69565fc74
- 25d ago Changed · +39 lines 620d13aba8bb
- 1mo ago Changed · +10 lines 902b008fc967
- 1mo ago First seen · 317 lines · 71 tokens per session scan A f4bb9a480968
issue-authoring is a skill published in the GitHub repository kurone-kito/idd-skill (11 stars, last pushed today), licensed MIT. It adds 71 tokens to every session and 6,653 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
ledger-tasks-yylo
Retrieve any YYLO Ledger Record by ID, discover PDRs and artifacts, and manage tasks and dependencies. Use for unknown record types, universal get/search, task operations, and source-of-truth boundaries.
grill-me
Grill the user about a requirement, decision, or idea before implementation, then produce an actionable planning report without writing code. Use when the user wants to clarify requirements, stress-test an idea, compare approaches, or plan before coding.
triage
Apply a formal state machine to issues — assign category (bug/enhancement/question/spike) and state (needs-triage → needs-info → ready-for-agent → ready-for-human → wontfix). Issues marked ready-for-agent become inputs to supergraph:plan. Use when processing a backlog, reviewing new issues, or preparing work for…
murmur-review-loop
Use when the user says 'send this to my client', 'get feedback on this page', 'send a review link', 'what did the client say', or 'work through the review notes'. Sends a Murmur review link, reads the notes reviewers pin to the page, replies, applies each change on a duplicate, and resolves every note with the…
plan-ledger-tasks-yylo
Create a concise Product Development Requirement and one or more implementation-sized YYLO Ledger tasks when the user explicitly asks to plan or register work.
kelly-support
Personal App-in-Skill customer-support desk (help desk) that triages incoming support tickets from email, WhatsApp, web chat, contact forms, and WeChat, drafts KB-grounded replies, and proposes actions, then holds every send behind a human approval queue with a pre-send quality gate (support-qa) that outputs…