agentleFS
johannshipsjohannships/reels-engine/skills/brief-builder/SKILL.md

brief-builder

Skill16 starsChanged 3 months agoMITView on GitHub

Turns one approved content concept into an execution-ready brief plus a traceable claim ledger. Use when the user says "build the brief", "turn this strategy into a brief", "prep the handoff for the writer/editor/designer", "outline this piece", "make a proof plan", "claim ledger", "production checklist", or hands over a strategy-memo.md and picks a concept. Produces content-brief.md and claim-ledger.csv. Does not write, film, design, or publish the finished asset.

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. duncan-buildroom/freeskills★ 65same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository8 other files it gives its agents.

The file

Show its rules and text

We split this skill into the rules it gives an agent

13 rules. About 0 are common, 9 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈9

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If you cannot resolve a source_signals entry to a real signal with real source_ids, say so and stop.

    line 43
  2. Distinctive:

    If you have no web access, or the environment blocks fetching, work only from the supplied local files and write this line into the brief …

    line 48
  3. Very specific:

    If an upstream artifact is missing entirely and the user wants to continue, stamp status: provisional, list what was missing, and mark …

    line 58
  4. Distinctive:

    Ask only for what is missing.

    line 75
  5. Very specific:

    Write every claim the piece needs into claim-ledger.csv first.

    line 99
  6. Very specific:

    Every placeholder gets a ledger row with claim_type = placeholder, publication_safe = unknown, and a required_action.

    line 162
  7. Distinctive:

    Before assigning status, check each of these and record the result in the brief:

    line 176
  8. Distinctive:

    Confidentiality: no secrets, credentials, private URLs, internal hostnames, personal contact data, or unapproved client identity

    line 178
  9. Distinctive:

    Permissions: every quote, screenshot, logo, and dataset is cleared for this use

    line 180
  10. Distinctive:

    Overclaiming: no reach, revenue, lead, or ranking promise.

    line 181
  11. Distinctive:

    Write both files. A brief without its ledger is not a valid output.

    line 202
  12. Distinctive:

    Every claim traces upstream to a source id and a locator.

    line 212
  13. Distinctive:

    Do not write or publish the finished asset here: If the user wants the draft written, that is a separate, explicit request after the brief …

    line 223

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Brief builder

You convert one approved concept into a brief someone can execute from without reopening the strategic question, and a claim ledger that keeps every factual beat traceable to a source.

The brief answers "how do we make this". It does not re-litigate "should we make this". If you find yourself arguing the concept again, stop and send it back to /content-strategist.

This is a skill, not a service. It runs when invoked, produces two files, and stops. It does not monitor sources, schedule work, or publish anything.

Read first, and treat as normative:

  • references/handoff-contracts.md for ID formats and the input contract
  • references/evidence-standard.md for evidence classes, claim rules, publication safety

Where these live: references/ and templates/ are bundled inside this skill's own directory, so they resolve wherever the skill is installed. If a file is genuinely missing, say so plainly and continue with the method described in this file. Never invent the contents of a reference you could not read.

Inputs

InputRequiredIf missing
concept_id (e.g. CON-003)yesask which concept; do not pick one for the user
strategy-memo.mdyesask once, then offer provisional mode
signal-report.mdyes to resolve source_signalsask once, then offer provisional mode
Owned assets (analytics, transcripts, screenshots, repo)nomark the beats that need them as placeholders

Exactly one concept per run. Two concepts means two runs. A brief that covers two angles gets executed as neither.

If you cannot resolve a source_signals entry to a real signal with real source_ids, say so and stop. Do not build a brief on an orphan.

Degraded operation

If you have no web access, or the environment blocks fetching, work only from the supplied local files and write this line into the brief metadata verbatim:

Live search was unavailable in this run. All evidence comes from supplied local sources.

Then stamp status: needs-verification and list every claim that a human must check online. Never fill a gap with recalled knowledge presented as a source.

If an upstream artifact is missing entirely and the user wants to continue, stamp status: provisional, list what was missing, and mark every unsourced beat as a placeholder row in the ledger. Provisional never means invented.

Workflow

1. Confirm the concept and the production format

Restate back to the user, in five lines, before you build anything:

  • concept_id and its one-sentence promise, copied from the memo
  • channel, carried through from the memo, not re-decided here
  • format and length or duration (e.g. "LinkedIn text post, 180 to 250 words", "YouTube talking-head, 8 to 10 min", "vertical short, 45 s")
  • who executes it (writer, founder on camera, designer, editor)
  • what proof the user already owns

Ask only for what is missing. If the memo specifies channel and CTA, do not ask again; asking a user to re-answer a question they already answered upstream is how a chain loses their trust.

2. Load upstream evidence and reject orphans

Walk every source_signals id from the concept into the signal report, and every source_ids entry from there into the source records. Build a working list: source id, publisher, date or unknown, access status, locator you can actually cite.

Reject, and list in the brief's risk section:

  • claims whose source id does not resolve
  • claims whose only support is a class 4 discovery-only source
  • quotes with no exact text and no locator
  • any source you could not actually open

An orphaned claim does not get quietly softened into vaguer wording. It gets rejected or converted into an explicit placeholder with a required action.

3. Build the claim ledger BEFORE the hooks and the outline

This ordering is deliberate and it is the main thing this skill does differently.

Write every claim the piece needs into claim-ledger.csv first. Only then write hooks and the outline, and only from claims that survived.

The reason: hooks are the most quotable and most screenshot-able line in the piece, so they are where an unsupported claim does the most damage. If you write the hook first you will fall in love with it, and then go looking for evidence to justify it. Building the ledger first means the sharpest claim you can defend becomes the hook, instead of the sharpest claim you can imagine.

Concretely: if the ledger cannot support "deploys got 40% faster", you never write the hook "the 40% deploy story". You write the hook from what you can prove, for instance "the config change nobody documented", and you log the 40% figure as a placeholder with required_action = pull the build timings from CI before filming.

Ledger columns, exactly, in this order:

claim_id,brief_section,claim_text,claim_type,source_ids,source_locator,evidence_class,publication_safe,approval_status,required_action,notes
  • claim_id: CLM-001, sequential, stable, never reused
  • brief_section: where the claim appears, so a reviewer can find it
  • claim_text: the claim as it will be asserted, not a topic label
  • claim_type: direct-fact | attributed-claim | user-assertion | inference | creative-direction | placeholder
  • source_ids: one or more SRC-###, semicolon separated; empty only for creative-direction and placeholder
  • source_locator: heading, page, paragraph, timestamp, line range, or URL fragment. "the docs" is not a locator
  • evidence_class: 1 to 5 per the evidence standard, or n/a
  • publication_safe: yes | no | unknown
  • approval_status: approved | needs-review | rejected | not-applicable
  • required_action: what a human must do, or empty
  • notes: contradictions, "as of" dates, permission questions

Commas inside a field mean the field gets double-quoted. Escape internal double quotes by doubling them.

4. Translate message architecture into an execution sequence

Take the concept's message architecture and turn it into ordered beats the executor performs. Each beat gets a job, an approximate length or duration share, and the claim ids it rests on.

A beat with no job gets cut. "Context" is not a job. "Show why the default config fails at 50 users" is a job.

5. Attach proof and locators to every factual beat

Section by section, name the claim ids, the sources, and the locators. If a beat needs a screenshot, a chart, a demo, or a quote, list it as a required asset with who provides it.

Quotes are verbatim plus locator, or they are labelled paraphrase and attributed. There is no third option.

6. Mark placeholders visibly and honestly

Placeholders are written as instructions, never as results:

  • Correct: [PLACEHOLDER: insert measured p95 latency before and after. Not yet measured.]
  • Wrong: latency dropped from 800ms to 120ms [confirm]

The wrong version survives a careless copy-paste and ships as a false claim. The correct version cannot be published by accident because it is not a sentence.

Every placeholder gets a ledger row with claim_type = placeholder, publication_safe = unknown, and a required_action.

7. Specify native format and a realistic definition of done

Say what "done" means in the executor's terms: word count, run time, aspect ratio, number of slides, caption, thumbnail text, alt text, link handling. Write it as a checklist a person can tick.

Be realistic about effort. If the brief needs a demo recording the user has not made, the definition of done includes making it.

8. Run the checks

Before assigning status, check each of these and record the result in the brief:

  • Confidentiality: no secrets, credentials, private URLs, internal hostnames, personal contact data, or unapproved client identity
  • Permissions: every quote, screenshot, logo, and dataset is cleared for this use
  • Overclaiming: no reach, revenue, lead, or ranking promise; no "viral" or "fastest growing" without comparable data; no regulated claim without support
  • Tense: nothing planned is described as done. An experiment you intend to run is not an experiment you ran
  • CTA: the CTA matches the memo, is deliverable, and does not promise anything the piece does not contain

9. Assign status

  • draft: still being assembled
  • needs-verification: complete in structure, but the ledger has at least one publication_safe = no|unknown or approval_status = needs-review|rejected row
  • approved-for-production: every ledger row is publication_safe = yes and approval_status = approved|not-applicable

There is no partial approval. A brief with one unknown claim is needs-verification, because the executor will not know which claim was the unknown one once they are three hours into an edit.

Outputs

Write both files. A brief without its ledger is not a valid output.

  • content-brief.md
  • claim-ledger.csv

Templates: templates/content-brief.md, templates/claim-ledger.csv.

Guardrails

  • A brief is not evidence. Nothing becomes true because it is written here. Every claim traces upstream to a source id and a locator.
  • Quotes are verbatim with a locator, or they are labelled paraphrase.
  • Never imply an experiment, build, customer result, or performance outcome happened when it is only planned. This is the single most common way an honest brief turns into a dishonest post.
  • Never include secrets, personal contact data, private URLs, or unapproved client identity. Assume the brief will be pasted into a shared doc.
  • Never invent sources, dates, quotes, or metrics, including "representative" or "illustrative" numbers inside the brief body. Illustrative numbers belong in the template, not in a real brief.
  • Never bypass logins, paywalls, robots rules, or rate limits to fill a gap.
  • Do not write or publish the finished asset here. If the user wants the draft written, that is a separate, explicit request after the brief is approved.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.