# Bl Setup

> Build the two files every other BylineKit skill reads - voice.md (how the user sounds) and ledger.md (what the user can actually claim). Use when the user first installs BylineKit, says "set up my voice", "my posts don't sound like me", asks where their profile lives, or when any other bl- skill finds the files missing.

- Skill: `ehteshambuildagents/bl-setup` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ehteshambuildagents/bl-setup`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ehteshambuildagents/bl-setup/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ehteshambuildagents (https://skillmd.com/u/ehteshambuildagents)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/ehteshambuildagents/bl-setup

---


# bl-setup

Two files do all the work in this pack. Everything else reads them.

| file | what it holds | what breaks without it |
| --- | --- | --- |
| `~/.claude/bylinekit/voice.md` | how the user writes | every draft sounds like a stranger |
| `~/.claude/bylinekit/ledger.md` | what the user can truthfully claim | every draft either fabricates or is empty |

Most tools in this space have the first file. The second one is the reason this
pack does not make things up.

## Run it in this order

### 1. Create the folder

```bash
mkdir -p ~/.claude/bylinekit
```

Copy `templates/voice.md` and `templates/ledger.md` from the repo into it if
they are not already there.

### 2. Fill voice.md from evidence, not from questions

Ask the user for **three of their own posts** - the three that sound most like
them, not the three that performed best. Those are different sets and the
difference matters.

Read them and write `voice.md` yourself. Infer:

- sentence length and how much it varies
- whether they use contractions (almost always yes)
- their actual vocabulary, including the words they overuse
- whether they swear, and how hard
- emoji: never, rarely, or freely
- how they open and how they close
- who they are visibly talking to

Then show the user what you inferred and let them correct it. People describe
their own writing badly. They recognise it accurately.

If they have no posts yet, interview them instead, but say plainly that the
voice file will be a guess until there are real posts to read.

### 3. Fill ledger.md, which is the part people skip

This is the list of things the user can put their name on. Ask for:

- **Numbers.** Revenue, headcount, hours saved, conversion rates, dates. Exact,
  not rounded into uselessness.
- **Stories.** The client that left, the launch that flopped, the hire that
  worked. One line each is enough to start.
- **Credentials.** Years in the role, companies, qualifications.
- **Named things.** Tools they built, talks they gave, pieces they wrote.
- **Off limits.** Clients they cannot name, numbers under NDA, claims their
  industry regulates.

Write each entry so a stranger could check it. `"Cut proposal time from ~4h to
~20min using a saved template, Q1 2025"` is a ledger entry. `"Improved
efficiency"` is not.

### 4. Confirm the loop works

Run one draft through `/bl-draft` and one through `/bl-scrub`. If the draft
comes back with `{{placeholders}}` in it, the ledger is too thin. Say so, and
go back to step 3.

## The rule this pack runs on

**A claim that is not in the ledger does not go in a draft.** If a post needs a
number the user has not given, it comes back as `{{your number}}` with a flag
attached, every time, in every skill. Never estimate on the user's behalf and
never reach for a plausible-sounding figure. An empty ledger produces honest
gaps, and honest gaps are fixable. Invented numbers under someone's real name
are not.

## Keeping them current

`ledger.md` goes stale faster than `voice.md`. Add to it whenever the user
mentions a real outcome in passing - that is free material and they will not
think to write it down. Re-read both files at the start of every other skill in
this pack.

