Daniel Cohen

Skills

Skills

Four skills: challenge a plan, test a doc on its readers, turn an idea or bug into an issue an engineer can start on and write in your own voice.

2 to 20 minClaude CodeClaude appOpen skills/ on GitHub
product-sparringSample reply

Position

Do not run a fourth sprint of prompt fixes. Three sprints gave no lift on supplier names and revision tags, so a fourth buys the same result.

Strongest counter

The easy drawings did improve. Shipping those covers part of the job. An estimator still needs the full scope, so a partial read leaves the hard part to a person.

Kill test

This week, run the eval set end to end on one real drawing set. Stop the extraction work if recall stays under the 95% line.

What the plan leaves out

The current approach misses context spread across drawings. Test a change to how the system reads them.

Recommendation

Stop prompting, run the end-to-end test and decide on its result.

Teaching example combining separate events in Parapet's history. The 95% rule was set in September, after the earlier prompt-only rounds.

What you get

Four skills, each with the reason I built it.

  • product-sparring challenges a plan, PRD, metric or go/no-go claim as a peer product lead and gives the strongest counter.
    Why I built itOn Parapet I ran several rounds of prompt fixes before I set a kill test, so I built a skill that asks for the test first.
    • None of those rounds improved supplier names or revision tags.
    • A weak plan found before the build costs a conversation. Found after, it costs a sprint.
    • The skill gives a position, the strongest counter and a test that could change the decision.
    • It changes its view only when you show it something new, and names what changed it.
  • recipient-panel has AI stand-ins for the people who will receive your work read it before you send it.
    Why I built itAI stand-ins for this site's readers found a step I had missed before any real reader hit it.
    • Each reader sees the draft cold and reports where they stop and what they object to.
    • I fix first the objections that two or more readers raise.
    • The result is a simulation: it shows where a draft loses a reader and says nothing about demand.
    • You name the roles.
    • Claude starts one subagent per role. A subagent is a separate AI helper. At most four run at a time.
    • Each reader reports the line where they stop reading, their objections with the line each rests on, one fix each, what would make them say yes and a score from 1 to 10.
    • Claude merges the reports and tightens the draft.
    • Presets for the readers:
      • Stakeholder doc: the sponsor who decides, the engineering lead, design, finance or legal, the team that does the work.
      • CV or application: a recruiter screen, HR, the PMs who interview you and the hiring manager. The applicant-tracking check stays a separate formatting check.
      • Product, feature or onboarding: three personas from your exact target segment plus one skeptic (four in total, one batch), each with a job to do, a context and a reason to quit.
      • Public page or post: the target reader, a skeptic, a copy editor and a voice check.
    • You check every fact a reader states.
    • Download the zip or see the skill on GitHub.
  • distill-to-gh-issue turns one finding, bug report or feedback row into a draft issue that you review before filing.
    Why I built itI used to write every roadmap, spec and issue by hand; now I describe the feature or bug and Claude writes the issue an engineer can start on.
    • Claude gathers the context first: it reads the live code and data before it trusts a doc.
    • It then asks me what the item leaves open, one question at a time, each with a proposed default.
    • The issue states the user problem and the expected behaviour, points to the relevant code and carries a spec where the work needs one.
    • It lists the open decisions for you to settle. You review the draft before it is filed.
    • In my own setup it also attaches prototypes and artifacts. The public skill stops at the issue.
    • A stop list keeps it out of repos it must never file into.
    • Claude Code only: it needs the GitHub command line (gh) and a local copy of the repository.
  • voice drafts emails and posts in your voice from rules extracted from your own sent writing.
    Why I built itI rewrote most AI drafts, so I turned about 25 of my sent emails into writing rules.
    • Example rules: lead with the point, numbers over adjectives, no em-dashes.
    • The skill loads the rules, drafts and then checks the draft against them.
    • I now edit drafts where I used to rewrite them.
    • Use writing you own. Check your employer's policy before you paste work email into an AI tool.
    • It carries a self-check and a slop hook (a small script that runs on its own and flags weak wording) for what the rules miss.

Copy it

Time to set up: 2 to 20 minutes. Pick the assistant you use. The choice is remembered on this device.

Setup steps

  1. For distill-to-gh-issue, copy the folder the same way with cp -Rn ~/how-i-work/skills/distill-to-gh-issue ~/.claude/skills/. Then, inside ~/.claude/skills/distill-to-gh-issue/, copy config.example.md to config.local.md and list the GitHub orgs or repos and handles it must never file into (5 minutes). Keep that file out of any public repo (a project folder with a saved history).
  2. For the voice skill, follow the eight-step method in the voice README: collect 20 to 30 sent items, extract rules, write them in command voice, add bans and a self-check. Keep your filled SOUL.md private (20 minutes plus testing).

Read the skill files before you install them.

Try product-sparring

First prompt
Use product-sparring to challenge this plan. Ask for any missing product stage or goal. Give your position, the strongest counterargument and the cheapest test that could change the decision.

Plan: [paste your plan]
Evidence: [paste the evidence you have]

Expected result: a reasoned position, a fair counterargument and a test with a decision threshold; check the cited evidence against your inputs.

Try recipient-panel

Paste only what your employer allows. Remove names and customer details first.

First prompt
Use recipient-panel on this doc. Preset: stakeholder doc. The readers are: [role 1], [role 2], [role 3]. They have to decide: [what the doc asks of them]. Merge the reports, fix the objections that two or more readers raised first, and give me a tightened draft.

Document: [paste it]

Expected result: one report per reader, a merged list of objections ordered by how many readers raised them, and a tightened draft. The readers are a simulation. Check any fact a reader states, and use the scores only to compare drafts.

No subagents? One new chat per reader
You are [role: for example the finance lead who approves the budget]. You must [what they decide or do with this doc]. You already know [their context]. You have [their patience, for example two minutes]. You say no when [their reasons].

Read the document below once, as this person. Then reply in under 300 words:
1. The line where you would stop reading, quoted.
2. Up to five objections, each with the line it rests on and one fix.
3. What would make you say yes.
4. One thing that works.

Document: [paste it]

Open a new chat for each reader, then paste all the answers into one chat and ask it to merge the objections two or more readers share.

Try distill-to-gh-issue

First prompt
Use distill-to-gh-issue to draft one issue from this feedback. Ask for the target repository and any missing context. Keep it as a draft for my review.

Feedback: [paste one finding]

Expected result: a draft with the user problem, desired behavior and open decisions; review it before approving publication.

Try voice

First prompt
Use the voice skill to rewrite this draft using my attached voice file. Preserve the facts.

Draft: [paste your text]

Expected result: a revised draft using your writing rules; compare it with the original for changed facts and phrasing you would not use.

Where it works

AssistantSupport
Claude CodeCopy the folder into ~/.claude/skills/.
Claude appDownload the zip, open Customize, then Skills, and upload it with "+", then "Create skill", then "Upload a skill". distill-to-gh-issue is Claude Code only.
Other assistantsPaste the SKILL.md text below the header into the assistant's custom instructions. distill-to-gh-issue needs Claude Code.

The distill-to-gh-issue stop list

The local config on distill-to-gh-issue lists the repos it must never file into, because an issue in the wrong repo reaches another person.

Came from

Three of the four skills came from my work on Sparktale and Parapet.

  • Most of my output on Sparktale is GitHub issues and written decisions for a partner developer who leads engineering, which is what distill-to-gh-issue serves.
  • product-sparring grew from the red team (a fresh Claude session that challenges a plan) and the kill tests I wrote for Parapet.
  • The voice skill came from the volume of writing the products ask for.