Agent skill

Make Trace

by AIScientists-Dev in AIScientists-Dev/Flowtrace

Turn any source that describes how a kind of task gets done (a SKILL.md, a chat log, a runbook, plain prose) into a runnable Morph trace.

MITAuto-check passedDevOps & Cloud

Install Make Trace

skills CLI
$ npx skills add AIScientists-Dev/Flowtrace --skill make-trace -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install AIScientists-Dev/Flowtrace make-trace --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/AIScientists-Dev/Flowtrace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/make-trace .claude/skills/make-trace && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
make-trace
GitHub stars
485
Token cost
~3.7k tokens
SKILL.md length
1,985 words
Files
2 (incl. references)
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Turn any source that describes how a kind of task gets done (a SKILL.md, a chat log, a runbook, plain prose) into a runnable Morph trace.

  • Works in 7 steps: Scaffold → Lift the source into a DAG (the hard part) → Verify faithfulness (do not skip) → …
  • Someone wants to make a trace from a source
  • SKILL.md covers Before you start, The cycle, Reuse a trace on new input and Steer a run: change a step,…, plus 3 more sections
  • Calls git and jq

What it does

Make Trace is an agent skill from AIScientists-Dev/Flowtrace. Turn any source that describes how a kind of task gets done (a SKILL.md, a chat log, a runbook, plain prose) into a runnable Morph trace. Lift it into a DAG, write a contract per step, place inputs, and drive the full run lifecycle to verify it. Use whenever someone wants to make a trace from a source.

Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/CLI.md`).

It sits in DevOps & Cloud, covering Runbooks and postmortems. The repository describes itself as: Run a task with AI as a flow of steps you keep, reuse, and refine, not a one-off chat. The licence is MIT.

When your agent uses it

  • Someone wants to make a trace from a source
  • Tasks that involve Runbooks and postmortems

Example prompts

  • “/make-trace”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Scaffold
  2. Lift the source into a DAG (the hard part)
  3. Verify faithfulness (do not skip)
  4. Write a contract per step
  5. Provide inputs
  6. Run the lifecycle
  7. Watch it

What it can do on your machine

Read from SKILL.md and the folder at commit 1571c76. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Make Trace loads about 3.7k tokens when it runs, and up to ~8.1k if it reads all its reference files. Until then it costs about 79 tokens; SKILL.md has 1,985 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~79
When it runs · the whole SKILL.md, loaded when a task matches
~3.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from AIScientists-Dev/Flowtrace at commit 1571c76, republished under its MIT licence (© AIScientists-Dev). 1,985 words, ~3,734 tokens.

Download SKILL.mdSave it as .claude/skills/make-trace/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
make-trace
description
Turn any source that describes how a kind of task gets done (a SKILL.md, a chat log, a runbook, plain prose) into a runnable Morph trace. Lift it into a DAG, write a contract per step, place inputs, and drive the full run lifecycle to verify it. Use whenever someone wants to make a trace from a source.

Make Trace

You turn a source (anything that describes how a kind of task gets done) into a trace: a folder holding a DAG that a human and an AI both read while the work runs. This skill covers the whole path, from a blank folder to a finished run.

Before you start

Two reads give you the full surface. Do them once:

  1. references/CLI.md (bundled next to this file) is the system contract: every command, the trace.json schema, the reply payload schema, the path rules, the state machine.
  2. The source itself. Read it closely; the steps you need are usually hiding in its prose. For a large or multi-file source, read the spine in full (the main document and any workflow section) and only sample the rest to confirm a step exists, rather than reading every file to the same depth.

The flowtrace binary drives everything. Get it in this order: honor $TRACE_BIN if it is set; else use it if it is on your PATH; else, inside a flowtrace checkout, use the build under target/ (target/release/flowtrace, else target/debug/flowtrace) or build one with ./scripts/install.sh from the repo root; else clone the repo first (git clone https://github.com/AIScientists-Dev/Flowtrace.git) and run its ./scripts/install.sh. Building needs Node and Rust and takes a few minutes the first time — it builds the web UI and the CLI and symlinks flowtrace to ~/.local/bin. When you forget a shape mid-task, the binary self-documents: flowtrace <cmd> --help, and flowtrace explain <type> (e.g. flowtrace explain trace, flowtrace explain reply).

The cycle

1. Scaffold
bash
cd <wherever you keep traces>   # conventionally ~/traces/
flowtrace init <slug>               # creates <slug>/ with .git and an empty trace.json

flowtrace init makes a subfolder named <slug> under the current directory, not in place.

2. Lift the source into a DAG (the hard part)

Read the source and pull out the steps hiding in it. Fill trace.json#steps, and for each step set from_steps, its upstream dependencies. The DAG is the whole point: decide what runs in parallel and what fans in.

The arrows are the knowledge. A source often reads as a flat list, but the real shape is a fan-in/fan-out graph. Do not flatten it into a straight line. Common patterns: independent ingests run as parallel roots and fan in at a join; an analysis branch and a recommendation branch fan out from the same join; the final write-up fans in from everything. Some sources are honestly sequential, though; a step-by-step creative pipeline really is a straight line, and forcing fake parallelism onto it is its own kind of unfaithful. Lift the shape that is actually there.

What becomes a node vs. folded into a STEP.md. Promote something to its own step only if it is a distinct cognitive move with its own input and output. If it is how to do an existing step (a rule, a special case, a reference detail), fold it into that step's STEP.md instead. This is the criterion that keeps a 25-file source from exploding into 25 nodes.

Mutually-exclusive paths are not one trace. If the source branches on input into paths that produce different deliverables (make a film or a deck or a prototype), that is several traces sharing an early spine, not one trace full of conditionals; traces describe shape, not control flow. Split on the deliverable. Same deliverable reached by a different internal pipeline is still one trace, though; branch inside a STEP.md, not in the DAG. Split on the deliverable, not on method.

Then check it:

bash
flowtrace validate
flowtrace show --fmt mermaid
3. Verify faithfulness (do not skip)

Lifting is judgment, and judgment flattens fan-in/fan-out graphs into straight lines that are wrong. Have a second, independent pass (a fresh agent is ideal) compare your DAG against the source: does every step appear, is every dependency real, was anything dropped or invented? Fix what it finds. This catches the mistakes you cannot see in your own lift.

If you cannot spawn a fresh agent, do it cold yourself: set your DAG aside, re-read the source from scratch, re-derive the edge list independently, then diff that against what you built. Reconcile every difference before moving on.

4. Write a contract per step

Each step gets a steps/<id>/STEP.md: a short Markdown file with optional YAML frontmatter on top and prose below. The frontmatter reads/writes show up in the UI; the body says how to do the step. Fold cross-cutting guidance (do's/don'ts, special cases) into the steps they affect.

markdown
---
name: score_bullets
description: Score each resume bullet against the keywords.
reads:
  - extract_keywords/keywords.json
  - resources/resume_before.md
writes:
  - bullet_scores.json
---

# Score Bullets

Read the keywords and the parsed resume, then score every bullet 0 to 1 by
relevance and note the gap on each. Scoring is judgment, not keyword counting.
5. Provide inputs

A run's inputs are plain files. There is no inputs field. Drop the input files in the trace's resources/ folder, and point the relevant step's reads: at them. Paths in reads:/writes: are written relative to the trace root: a resource reads as resources/<file>, an upstream step's asset as <step_id>/<file>.

6. Run the lifecycle

Each CLI write makes one git commit. For every step: mark it running, produce its asset on disk, mark it done with that asset, and emit a structured reply. Then close the deliverable.

The reply is how each step shows its work — write it rich, not bare. A bare { "headline", "status" } renders as a lonely title and wastes the step. Before you write replies, read the schema instead of writing from memory: flowtrace explain reply lists the top-level fields, and flowtrace explain reply.evidence lists the typed evidence blocks and each block's own options (e.g. a figure's caption). Use what they document and match the reply to what the step actually produced. Skipping this read is the single most common reason a reply lands as just a title with nothing under it.

bash
RUN=$(flowtrace run new --name "first run" | tail -1)

flowtrace step <id> running --message "..."
#   ... do the step's work; write its asset under runs/$RUN/<id>/ ...
flowtrace step <id> done --asset <file>
flowtrace reply < reply.json
# ... repeat for every step, then:

flowtrace deliverable done --asset <step_id>/<final-output>
flowtrace run show          # confirm every step is done and the deliverable is done
7. Watch it
bash
flowtrace serve             # opens the DAG at http://localhost:3000

Reuse a trace on new input

A finished trace is a method, not a one-off: run it again on new input and you reuse the structure instead of rebuilding it. The plan stays put — trace.json and the STEP.md contracts do not change. You start a fresh run and regenerate the contents inside it.

Inputs are files, not declared variables: from_inputs and a step's reads: are cosmetic labels for the UI, never consumed at runtime. So reuse is four moves — recover the plan, open a new run, swap the input files, drive the lifecycle again.

0. Recover the plan. If you did not build this trace, you do not know its step IDs, their order, or each step's asset filename — and the snippets below are all placeholders (<id>, <file>, <step_id>). Read them off the trace, don't guess:

bash
flowtrace show --fmt json | jq -r '.steps | keys[]'   # the step IDs (unordered)
flowtrace show --fmt mermaid                           # the edges — drive steps in dependency order, roots first

Each step's declared asset filename is trace.json#steps.<id>.assets; the deliverable's asset list (run-relative paths) is trace.json#deliverable.assets — reuse the same set when you close the deliverable. The body of each steps/<id>/STEP.md tells you what that asset should contain.

bash
RUN=$(flowtrace run new --name "<new instance>" | tail -1)   # a fresh, isolated run
  1. Swap the input. Replace every file under resources/ that this run should change — a trace often has more than one input, and swapping only some silently mixes new and old (the CLI never reads these files, so it cannot warn you). The CLI only ever commits state.json and declared assets, never your input files — so commit them yourself if you want the new input in the history:
bash
git add resources/ && git commit -m "swap inputs: <new instance>"
  1. Drive the lifecycle for this run. Exactly step 6 again, in dependency order, with --run "$RUN" on every write (step, reply, and deliverable all take it). Pass it every time: omit it and the CLI targets the most recently created run, which is your new run only until any other run appears — then an un---run'd write lands in the wrong run with no error. For each step: mark it running (the step folder need not exist yet), then write its asset under runs/$RUN/<id>/, then done --asset (which fails if the file is not on disk), then emit a reply. Then close the deliverable.
bash
flowtrace step <id> running --run "$RUN" --message "..."
mkdir -p "runs/$RUN/<id>"
#   ... regenerate the step's asset at runs/$RUN/<id>/<file> from the new input ...
flowtrace step <id> done --asset <file> --run "$RUN"   # --asset is step-relative: just <file>
flowtrace reply --run "$RUN" < reply.json
# ... every step in dependency order, then close with the deliverable's own asset set:
flowtrace deliverable done --asset <step_id>/<final-output> --run "$RUN"   # --asset is run-relative here

Runs are isolated: each runs/<run_id>/ carries its own assets and state.json, so a new run never disturbs an earlier one. flowtrace run list shows them side by side, and every prior run's outputs stay exactly as they were. (Re-entering a step within one run to redo it, after changing your mind about a node, is a different move — steering, covered next.)

Show full SKILL.md (675 more words)Show less

Steer a run: change a step, re-run what depends on it

Steering is the other half of a live run: you changed your mind about a step and want that change to flow through, without starting over. It stays inside the same run — done is not final, so you re-enter the step and re-run only what depended on it. (Reuse opens a new run for new input; steering edits a node within one run.)

The CLI does not track staleness for you — the trace is soft, you own propagation. Ask it for the exact set to re-run — show reads the static plan, so it takes no --run:

bash
flowtrace show --downstream <id>   # the step's transitive dependents, in topological order
  1. Redo the step you changed — re-enter it and produce its new asset, exactly as in step 6. The re-run writes below take --run "$RUN" (the run you are steering; omit it for the latest):
bash
flowtrace step <id> running --run "$RUN" --message "why you changed it"
#   ... rewrite runs/$RUN/<id>/<file> ...
flowtrace step <id> done --asset <file> --run "$RUN"
flowtrace reply --run "$RUN" < reply.json
  1. Re-run the downstream, front to back. Walk the --downstream list in the order it printed (it is topologically sorted) and re-run each one the same way — every step in it was computed from the old output and is now stale.

  2. Re-confirm the deliverable. It is not in --downstream and carries no staleness signal, so once a steer changes the final output, close it again:

bash
flowtrace deliverable done --asset <step_id>/<final-output> --run "$RUN"

The full state-machine rules live in references/CLI.md § "Re-running and steering".

Precipitating a completed run

A source does not have to be prose written ahead of time. A task you (or an agent) just finished is also a source, often the best one, because the topology is given: you already walked the dependency edges, so you transcribe a graph instead of inferring one. The cycle above still applies, with three shifts:

  • Generalize by subtraction. A finished run is fully concrete: one product, one set of outputs. The trace is that shape with the specifics removed. Strip every instance detail out of trace.json and the STEP.md bodies (no product names, no one-off values); the concrete outputs become the assets of run #1, not part of the method. (A step's does should read condense the cleaned draft into a thread, not condense the Redis-to-NVMe post into a thread.)
  • Re-point the faithfulness check. Step 3 flips. The risk is no longer a flattened graph (the trace cannot flatten, it happened); it is instance leak: specifics bleeding into the skeleton. Re-read trace.json and each STEP.md asking "would this read the same for the next instance?"
  • Register, don't regenerate. The assets already exist from the run you did. The lifecycle is recording them into runs/<id>/<step_id>/, not producing them again.

The run's concrete input becomes a file in resources/, pointed at by the root step's reads: (see step 5). If the run's steps each called a skill, name that skill in the step's STEP.md; the trace is the composition layer, and its nodes still call the moves.

Rules that trip people

  • Asset path anchoring differs by command. flowtrace step --asset is step-relative (resolved under runs/<id>/<step_id>/, so --asset out.md). flowtrace deliverable --asset is run-relative (<step_id>/out.md). An evidence[].path inside a reply is run-relative too. One file, three forms.
  • A reply needs at minimum { "headline": "...", "status": "..." }. Add checkpoint.step_id to bind it to a step; add evidence[] for figures, tables, checks, or citations. flowtrace explain reply and flowtrace explain reply.evidence list every field. The --output example skeleton is bare; build richer replies from flowtrace explain reply or references/CLI.md section 6.
  • Only declared assets are committed. Scratch files in a step folder stay untracked. STEP.md files and your input files are not assets, so the run lifecycle never commits them. Commit them yourself if you want them in the history.
  • A terminal step that feeds the deliverable is not an orphan. Older binaries may lint such a sink node as orphan_step; that is benign for a node whose asset is in the deliverable.

The one thing this cannot hand you

A trace is the composition layer above individual moves, drawn as a visible, steerable DAG. The right topology for a given source is judgment, made in step 2; step 3 exists to check it. Everything else here is mechanical.

© AIScientists-Dev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/make-trace of AIScientists-Dev/Flowtrace.

  • SKILL.md
  • references/CLI.md

Open the folder on GitHubat commit 1571c76

Compare with similar skills

Make Trace next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Make Trace compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Make Trace this skillAIScientists-Dev/Flowtrace485—~3.7kAutomated safety check: PassMIT
Trader Memory Coretradermonty/claude-trading-skills3k2 repos~4.3kAutomated safety check: PassMIT
Author Migrationnrwl/nx29k—~12kAutomated safety check: NotesMIT
Write Notes Like Deepseekczm15053/write-notes-like-deepseek477—~1.9kAutomated safety check: PassNone
OpenRig Upgrade Proceduremvschwarz/openrig5.5k—~2.9kAutomated safety check: PassApache-2.0
GreptimeDB Release RunbookGreptimeTeam/greptimedb6.7k—~1.4kAutomated safety check: PassApache-2.0

Similar skills

  • Trader Memory Core

    tradermonty/claude-trading-skills

    Track investment theses across their lifecycle — from screening idea to closed position with postmortem.

    3k GitHub starsUsed in 2 repos~4.3k tokens
    DevOps & CloudAuto-check passed
  • Author or scope a first-party Nx migration. An agent skill from nrwl/nx.

    29k GitHub stars~12k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • Write Notes Like Deepseek

    czm15053/write-notes-like-deepseek

    A skill your agent uses when a change is non-trivial by DSH standards (behavior, architecture, cross-file contracts, process/tooling, testing strategy, or on-disk/wire/config formats), when choosing…

    477 GitHub stars~1.9k tokensUpdated 15 days ago
    DevOps & CloudAuto-check passed
  • OpenRig Upgrade Procedure

    mvschwarz/openrig

    Walks an agent through upgrading the OpenRig CLI and daemon one observed step at a time, keeping live seats alive and reconciling managed plugin files.

    5.5k GitHub stars~2.9k tokensUpdated today
    DevOps & CloudAuto-check passed
  • GreptimeDB Release Runbook

    GreptimeTeam/greptimedb

    Runbook for publishing a GreptimeDB version: pick the release branch, verify the Cargo version, then tag, create the GitHub release and open the docs note PR.

    6.7k GitHub stars~1.4k tokensUpdated 2 days ago
    DevOps & CloudAuto-check passed
  • Statem

    henryqin1997/statem

    A skill your agent uses when a long coding or research task should be managed with statem state-machine runbooks, including creating specs, starting or resuming runs, checking current state…

    1.3k GitHub stars~1.2k tokensUpdated 1 mo ago
    DevOps & CloudAuto-check passed

Categories

Questions about Make Trace

What does Make Trace do?

Turn any source that describes how a kind of task gets done (a SKILL.md, a chat log, a runbook, plain prose) into a runnable Morph trace. Make Trace is an agent skill from AIScientists-Dev/Flowtrace.md, a chat log, a runbook, plain prose) into a runnable Morph trace.

When should I use Make Trace?

Make Trace fits situations like: someone wants to make a trace from a source; tasks that involve Runbooks and postmortems.

How do I install Make Trace in Claude Code?

Run `npx skills add AIScientists-Dev/Flowtrace --skill make-trace -a claude-code`. Or copy the skill folder (skills/make-trace in AIScientists-Dev/Flowtrace) into .claude/skills/make-trace in your project. Claude Code loads it when a task matches its description.

How do I install Make Trace in Codex?

Run `npx skills add AIScientists-Dev/Flowtrace --skill make-trace -a codex`. Or copy the skill folder (skills/make-trace in AIScientists-Dev/Flowtrace) into .agents/skills/make-trace in your project. Codex loads it when a task matches its description.

Can I use Make Trace in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add AIScientists-Dev/Flowtrace --skill make-trace -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/make-trace, .gemini/skills/make-trace, .github/skills/make-trace and .opencode/skills/make-trace in your project.

What does Make Trace need to run?

Going by SKILL.md and its folder, Make Trace needs the command-line tools its instructions call (git and jq).

Does Make Trace access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Make Trace safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Make Trace use?

Make Trace is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Make Trace use?

About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.3k tokens, read only when the agent opens those files.

What are the alternatives to Make Trace?

Skills that share tags, products or a category with Make Trace: Trader Memory Core (tradermonty/claude-trading-skills, 3k stars), Author Migration (nrwl/nx, 29k stars), Write Notes Like Deepseek (czm15053/write-notes-like-deepseek, 477 stars) and OpenRig Upgrade Procedure (mvschwarz/openrig, 5.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Make Trace?

AIScientists-Dev (a GitHub organization) maintains it in AIScientists-Dev/Flowtrace, which has 485 GitHub stars. The repository was last updated on June 9, 2026.

Source: AIScientists-Dev/Flowtrace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.