Pad
PerpetualSoftware/pad
Talk to your project. An agent skill from PerpetualSoftware/pad.
Arrange the repository's public .pm adoption board — show status, create workstreams, capture inbox notes, promote notes into milestones, add tasks, mark work done, park blocked work with its…
$ npx skills add bex-co/beancount-io --skill pm -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install bex-co/beancount-io pm --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/bex-co/beancount-io.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/pm .claude/skills/pm && rm -rf skills-srcUse ~/.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/
Install the "pm" agent skill from https://github.com/bex-co/beancount-io/tree/main/.agents/skills/pm into .claude/skills/pm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pm", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/bex-co/beancount-io/tree/main/.agents/skills/pmType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add bex-co/beancount-io --skill pm -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install bex-co/beancount-io pm --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bex-co/beancount-io.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/pm .agents/skills/pm && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pm" agent skill from https://github.com/bex-co/beancount-io/tree/main/.agents/skills/pm into .agents/skills/pm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pm", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add bex-co/beancount-io --skill pm -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install bex-co/beancount-io pm --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bex-co/beancount-io.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/pm .cursor/skills/pm && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "pm" agent skill from https://github.com/bex-co/beancount-io/tree/main/.agents/skills/pm into .cursor/skills/pm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pm", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/bex-co/beancount-io.git --path .agents/skills/pm--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add bex-co/beancount-io --skill pm -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install bex-co/beancount-io pm --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bex-co/beancount-io.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/pm .gemini/skills/pm && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "pm" agent skill from https://github.com/bex-co/beancount-io/tree/main/.agents/skills/pm into .gemini/skills/pm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pm", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install bex-co/beancount-io pmInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add bex-co/beancount-io --skill pm -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/bex-co/beancount-io.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/pm .github/skills/pm && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "pm" agent skill from https://github.com/bex-co/beancount-io/tree/main/.agents/skills/pm into .github/skills/pm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pm", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add bex-co/beancount-io --skill pm -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install bex-co/beancount-io pm --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bex-co/beancount-io.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/pm .opencode/skills/pm && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "pm" agent skill from https://github.com/bex-co/beancount-io/tree/main/.agents/skills/pm into .opencode/skills/pm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pm", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
pmArrange the repository's public .pm adoption board — show status, create workstreams, capture inbox notes, promote notes into milestones, add tasks, mark work done, park blocked work with its…
Pm is an agent skill from bex-co/beancount-io. Arrange the repository's public .pm adoption board — show status, create workstreams, capture inbox notes, promote notes into milestones, add tasks, mark work done, park blocked work with its unblock condition, and drop work that should no longer be done. Use only when the user explicitly invokes $pm or asks to update, arrange, or check the .pm board. Do not use for proposing or brainstorming new work (that is pm-brainstorm) or for ordinary code edits.
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering Brainstorming, Project management and Email management. The repository describes itself as: 💰 Double-entry bookkeeping made easy — plain-text accounting for humans and AI agents. Polished iOS & Android app built with React Native + Expo. The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 2103ca1. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditBash(ls:*)Bash(find:*)Bash(cat:*)From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Pm loads about 4.7k tokens when it runs. Until then it costs about 115 tokens; SKILL.md has 2,484 words of instructions outside code blocks.
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.
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.
The full file from bex-co/beancount-io at commit 2103ca1, republished under its MIT licence (© bex-co). 2,484 words, ~4,660 tokens.
.claude/skills/pm/SKILL.md (or your agent's skills folder)..pm boardUsage: /pm [status | new workstream <title> | add <wN> <idea> | promote <wN/NNN> | new milestone <wN> <title> | add-task <wN/mN> <title> | done <wN/mN/tNNN or wN/NNN> | block <target> <reason> | unblock <target> | drop <wN/mN, wN/mN/tNNN or wN/NNN> <reason>]
/pm is the only skill that writes to .pm/. It arranges milestones and tasks under the conventions below. /pm-brainstorm proposes; /pm materializes. This file (.agents/skills/pm/SKILL.md) is the canonical definition of the board conventions — mission, hierarchy, sizing rule, quality gate, standing closing tasks, templates. /pm-brainstorm reads it at runtime and must not restate or diverge from it. Parse the subcommand from $ARGUMENTS (default = status).
This board exists to grow adoption of Beancount.io in the open-source and agentic-coding community. Act as the technical program manager for that goal: sequence work by adoption impact, not by what is fun to build. Every milestone must advance one of these pillars and name it in its ## Source + Goal linkage:
| Pillar | Meaning |
|---|---|
| A1 — Agent-native accounting | A coding agent (Claude Code, Codex, …) can set up and maintain a beancount ledger end-to-end: skills, CLI, MCP surfaces, instruction-file quality. |
| A2 — Frictionless onboarding | A newcomer — human or agent — goes from zero to a working ledger in minutes: installers, beancount-init, quickstarts that work exactly as written. |
| A3 — Community & distribution | Reach and credibility: docs, examples, launches, package registries, GitHub presence, Telegram. Signals: installs, stars, skill invocations, contributors. |
.pm hierarchy| Level | Path | Meaning | Effort |
|---|---|---|---|
| Workstream | wN/ (w1, w2, w3, …) | a general-purpose worker queue; README.md + inbox notes | — |
| Inbox note | wN/NNN.md (w1/005.md) | one idea or a sub-hour unit of work, plain markdown | ≤ ~1h |
| Milestone | wN/mN/ (m1, m2, …) | a shippable chunk: README.md + task files | > ~1h, multiple tasks |
| Task | wN/mN/tNNN.md | a single unit | tens of minutes |
The board is public. .pm/ is committed to a public repo. Write every board file for public consumption: no secrets or credentials, no user data, and no references to private repositories or their contents. Assume the community reads the board — it is itself an adoption surface.
Respect the anti-goals. Read .pm/DO_NOT_DO.md before proposing or materializing work. Do not create milestones/tasks that conflict with it.
Workers are generalists. A workstream is a worker queue, not a permanent topic, package, feature, or pillar lane. Keep workstream titles and provenance generic; put topic-specific scope in milestones, tasks, and inbox notes. Route new work by priority, dependencies, and available capacity, and allow one workstream to contain unrelated topics across A1/A2/A3.
Sizing rule. A milestone must be > ~1 hour of work across more than one task. If a chunk is ≤ ~1h (tens of minutes, a task or two), do NOT create an mN/ directory — record it as a loose inbox note wN/NNN.md. Tasks take tens of minutes; milestones take hours.
IDs must match the path. A task's id: wN/mN/tNNN frontmatter must equal the directory it lives in. Never create a milestone dir whose path disagrees with the IDs inside it; if you find drift, flag and repair it, don't copy it.
Keep status in sync across all three places it lives: the workstream README.md milestone checkbox, the milestone README.md **Status:** line + the — DONE marker in the task table, and each task's status: frontmatter.
Completed work must exit the open tree. Moving completed work into done/ is a mandatory exit condition, not optional cleanup. A mutating subcommand must not report success while an affected task with status: done remains at wN/mN/tNNN.md, or while an affected milestone with no open tasks remains at wN/mN/. Move completed tasks to wN/mN/done/ and completed milestones to wN/done/mN/, then verify the old open paths no longer exist.
Unwanted work leaves the tree with its reason on record. A milestone or inbox note that should no longer be done is removed by drop, never by unchecking, editing in place, or leaving it to rot: its files go, the workstream README.md keeps a one-line tombstone under ## Dropped, and its number is never reused. done is for finished work and drop is for unwanted work — a milestone whose definition of done already holds is closed with done, not dropped, and work already under done/ is history and is never dropped.
Blocked work waits in blocked/ with its unblock condition. Work that is still wanted but cannot proceed keeps its number, its files, and its pending checkbox, and moves aside: a milestone to wN/blocked/mN/, an inbox note to wN/blocked/NNN.md. A task cannot leave its milestone — its id must match its path — so a blocked task stays put with status: blocked and the milestone README.md carries the reason. Every blocked item states the exact blocker and an Unblock: condition, and names who can clear it when that is not this repository (a deploy, a credential, a store review, a decision only the user can make). "Blocked" with no written condition to clear it is not a status, it is an abandonment.
Numbering: next free zero-padded 3-digit for inbox notes (NNN) and tasks (tNNN); next free wN / mN. Scan the tree first, including ## Dropped tombstones and everything under done/ and blocked/; don't reuse a number.
Use worker: worker1 unless the workstream README names another worker.
Milestones must be meaningful. Every milestone must include direct pillar linkage (A1/A2/A3), an observable expected adoption outcome, and why this work matters now (dependency/risk/sequence rationale).
Every milestone ends with standing closing tasks, appended after the implementation tasks whenever a milestone is materialized:
README.md (install/quickstart steps still work exactly as written), the root README.md and AGENTS.md package tables, the appropriate skill catalog (skills/AGENTS.md for customer workflows, .agents/AGENTS.md for development workflows) for new or changed skills, every scope's guidance in a real AGENTS.md, and the .claude/skills link to the real .agents/skills directory (root AGENTS.md compatibility rules). For agent-facing work, verify the behavior holds for both Claude Code and Codex — same instructions, same triggers. Flag drift as follow-up work rather than silently diverging. Omit this task only for milestones with no user- or agent-facing surface (pure infra, board mechanics, internal refactors) — note why it was omitted in the milestone's ## Source + Goal linkage./simplify over the code this milestone changed (reuse / simplification / efficiency; behavior-preserving).status: done, move each tNNN.md to wN/mN/done/, mark every row — **DONE** and set **Status:** done in the milestone README.md, move the whole wN/mN/ directory to wN/done/mN/, and check - [x] in the workstream README.md. Completing this task is the move — running /pm done <wN/mN/tNNN> on it last triggers the milestone move (the done subcommand's step 4). Do not run it until the DoD holds: a milestone lands in done/ when its observable end state is real, not merely when the code is written.Each depends_on the last implementation task(s) (Simplify and Test coverage depend on Adoption surface when it's present; Closeout depends on Test coverage) and all count toward the (N tasks) total. add-task inserts new work before these (before Closeout) and updates their depends_on.
status (default)Read the tree (find .pm -type f -name '*.md', skipping done/) and .pm/DO_NOT_DO.md. Print, per open workstream: its milestones with **Status:**, and the next actionable task per milestone — the first non-done task whose depends_on are all satisfied. Also list open inbox notes, and everything under blocked/ with the condition that would clear it. Then run a lightweight validation pass and flag:
.pm/DO_NOT_DO.md,## Source + Goal linkage or a pillar (A1/A2/A3),done/ directory,Touch no files.
new workstream <title>Create the next free wN/ with README.md from the workstream template below. The title must describe a generic worker queue, not a topic specialty.
add <wN> <idea…>Create the next free inbox note wN/NNN.md with the idea as plain terse markdown (no frontmatter). This is the default home for sub-hour work.
promote <wN/NNN> / new milestone <wN> <title>Apply the sizing rule first.
wN/mN/ with README.md (milestone template) + one tNNN.md per task (task template) + the standing closing tasks (Adoption surface when the milestone ships a user- or agent-facing change, then Simplify, then Test coverage, then Closeout), add the - [ ] **mN** — … line to the workstream README.md, and fill ## Source + Goal linkage with source + pillar linkage + expected outcome + why-now rationale (note there why Adoption surface was included or omitted).wN/NNN.md and tell the user why (too small for a milestone).add-task <wN/mN> <title>Create the next tNNN.md from the task template and add its row to the milestone README.md table before the standing closing tasks, updating their depends_on to include it. Update the (N tasks) count in the workstream README.
done <wN/mN/tNNN or wN/NNN>status: done. If the task is being closed because its work already landed outside it (a triage close — the acceptance criteria hold on main through another milestone or commit, not through work done for this task), append a ## Closed by triage section to the task with the evidence — commit SHA, paths, test names — so the public record shows why it closed without work.README.md: mark the row — **DONE** and update the **Status:** line (e.g. todo (t001 done)).wN/mN/done/tNNN.md.wN/done/mN/ and check its box (- [x]) in the workstream README.md.done/; and, when no open tasks remain, the milestone exists only at wN/done/mN/, its README.md says **Status:** done, and the workstream checkbox is checked. Do not report success until these moves and status updates are complete.For an inbox note wN/NNN.md (including one under blocked/): append a --- separator and one **Resolved <YYYY-MM-DD>** — <what changed>, shipped in <SHA> (<package>) paragraph, so the public record says what closed it; move the file to wN/done/NNN.md; remove its bullet from the workstream README.md if it is listed there. Verify the open path no longer exists before returning.
Show the intended moves before mutating if the user passed DRY_RUN=1.
block <wN/mN, wN/mN/tNNN or wN/NNN> <reason>Park work that cannot proceed, with its blocker on record. Refuse without a reason. Blocking is not dropping: the work is still wanted, so nothing is deleted, no number is retired, and the workstream checkbox stays unchecked.
## Blocked section for a milestone or task (a note gets a **Blocked <YYYY-MM-DD>** — … paragraph) stating what is blocked, the exact blocker, an Unblock: condition that would clear it, and who can clear it when that is not this repository — a deploy, a credential, a store review, a decision only the user can make. Record any partial work already shipped, so the next worker knows where the baseline is.wN/blocked/mN/, an inbox note to wN/blocked/NNN.md. A task does not move — its id must match its path — so set its frontmatter status: blocked and put the reason in its milestone's ## Blocked section. When every open task in a milestone is blocked, block the milestone itself.README.md: keep the milestone's - [ ] line (blocked work is still pending), retarget its link to ./blocked/mN/README.md, and append — **blocked:** <one line>.blocked/ (or the task reads status: blocked), the blocker and its Unblock: condition are written down, and every link that pointed at the old path still resolves.Show the intended moves before mutating if the user passed DRY_RUN=1.
unblock <wN/mN, wN/mN/tNNN or wN/NNN>The reverse, once the unblock condition is actually met — verify it against the repository first, and say what cleared it.
wN/mN/ or wN/NNN.md, or set the blocked task's status: back to todo.## Blocked section (or the note's blocked paragraph) with a one-line record of what cleared it and when. Keep the history; do not erase that it was blocked.README.md link and drop the — **blocked:** … suffix.blocked/ path no longer exists, the item is live again, and its links resolve.drop <wN/mN, wN/mN/tNNN or wN/NNN> <reason>Remove work that should no longer be done. Refuse without a reason, and refuse for anything already under done/ — completed history is never rewritten. For a milestone whose definition of done already holds, use done on its tasks instead; for work that is still wanted but stuck, use block. drop records that the work is unwanted, not that it is finished or waiting.
For a task wN/mN/tNNN: delete the task file, remove its row from the milestone README.md table, update the depends_on of every task that named it, correct the (N tasks) count in the workstream README.md, and add the tombstone line under a ## Dropped section in the milestone README.md rather than the workstream one. Never drop a task to make a milestone look complete — if the work is still needed, the milestone is blocked, not done.
wN/mN/ or wN/NNN.md) and read it, so the tombstone can name what it was.wN/mN/done/ tasks) or the inbox note file.README.md: remove the milestone's - [ ] **mN** line, then add - ~~**mN**~~ — <title> — dropped <YYYY-MM-DD>: <reason> under a ## Dropped section (create it directly after ## Milestones if absent). Inbox notes get the same line keyed by NNN. Keep the reason public-safe and cite what justifies it — the DO_NOT_DO.md rule, ADR, commit, or superseding milestone..pm/DO_NOT_DO.md only when the user asks.Show the intended removals before mutating if the user passed DRY_RUN=1.
README.md# wN — <generic worker-queue title> (<worker>)
**Worker:** <worker> — general-purpose adoption worker; accepts the next highest-impact milestone across packages, topics, and A1/A2/A3 rather than owning a permanent specialty.
## Milestones
- [ ] **mN** — <title> (<N> tasks) ← from <source>README.md# wN · mN — <name>
**Worker:** <worker> **Goal:** <what shipping this achieves> **Status:** todo
## Tasks (in order)
| id | title | est | depends_on |
| ---- | ------- | --- | ---------- |
| t001 | <title> | 30m | — |
## Definition of done
<observable, testable end state>
## Source + Goal linkage
- **Source:** <pointer to the inbox note / brainstorm / docs this came from>
- **Goal linkage:** <which adoption pillar (A1/A2/A3) this advances, and how>
- **Expected outcome:** <observable adoption impact after shipping — who can now do what>
- **Why now:** <dependency / risk / sequence rationale>tNNN.md---
id: wN/mN/tNNN
title: <title>
worker: <worker>
status: todo
estimate: 30m
depends_on: [wN/mN/tMMM]
---
## Objective
<one paragraph>
## Context
- <concrete paths / packages / facts>
## Steps
1. <step>
## Files
- <paths to touch>
## Acceptance criteria
- [ ] <testable check>
## Out of scope
- <deferred adjacent work>wN/NNN.mdPlain terse markdown, no frontmatter — one idea or a sub-hour unit of work.
$ARGUMENTS
© bex-co, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/pm of bex-co/beancount-io.
Open the folder on GitHubat commit 2103ca1
Pm 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Pm this skillbex-co/beancount-io | 295 | — | ~4.7k | Automated safety check: Pass | MIT | |
| PadPerpetualSoftware/pad | 186 | — | ~10k | Automated safety check: Notes | Apache-2.0 | |
| Andreessenalirezarezvani/claude-skills | 28k | — | ~3k | Automated safety check: Pass | MIT | |
| AI Team Orchestrationgithub/awesome-copilot | 40k | — | ~992 | Automated safety check: Pass | MIT | |
| Idea Refinementaddyosmani/agent-skills | 103k | 6 repos | ~2k | Automated safety check: Pass | MIT | |
| Agent RelayAgentWorkforce/relay | 866 | — | ~1.7k | Automated safety check: Pass | Apache-2.0 |
PerpetualSoftware/pad
Talk to your project. An agent skill from PerpetualSoftware/pad.
alirezarezvani/claude-skills
Marc Andreessen-mode decision and productivity skill. An agent skill from alirezarezvani/claude-skills.
github/awesome-copilot
Bootstrap and run a lightweight multi-agent development team.
addyosmani/agent-skills
Guides a conversation that takes a vague idea through divergent and convergent thinking and ends in a markdown one-pager covering scope and assumptions.
AgentWorkforce/relay
A skill your agent uses when you need Codex to coordinate multiple agents through Agent Relay for peer-to-peer messaging, lead/worker handoffs, or shared status tracking across sub-agents and…
EveryInc/compound-engineering-plugin
Turns a vague or ambitious feature idea into a requirements-only plan through dialogue with you, sized to the work, before any code is written.
bex-co/beancount-io
Close an accounting period in a Beancount ledger by reconciling each active account through beancount-reconcile, checking assertions and recurring gaps, reviewing flags, then proposing a commit with…
bex-co/beancount-io
Import a bank or card CSV, OFX/QFX, or QIF export into an existing Beancount ledger.
bex-co/beancount-io
Write or repair a reusable Beangulp importer from a sample bank export, with reviewed golden files and a passing test harness.
bex-co/beancount-io
Scaffold a new Beancount ledger with bea init and validation, with optional Fava browser setup when requested.
bex-co/beancount-io
Record a described options trade or lifecycle event as validated Beancount transactions through bea, after review and confirmation.
bex-co/beancount-io
Reconcile one Beancount account against a CSV statement or pasted PDF text.
Arrange the repository's public .pm adoption board — show status, create workstreams, capture inbox notes, promote notes into milestones, add tasks, mark work done, park blocked work with its…. Pm is an agent skill from bex-co/beancount-io.pm adoption board — show status, create workstreams, capture inbox notes, promote notes into milestones, add tasks, mark work done, park blocked work with its unblock condition, and drop work that should no longer be done.
Pm fits situations like: explicitly invokes $pm; check the .pm board; brainstorming new work (that is pm-brainstorm); for ordinary code edits.
Run `npx skills add bex-co/beancount-io --skill pm -a claude-code`. Or copy the skill folder (.agents/skills/pm in bex-co/beancount-io) into .claude/skills/pm in your project. Claude Code loads it when a task matches its description.
Run `npx skills add bex-co/beancount-io --skill pm -a codex`. Or copy the skill folder (.agents/skills/pm in bex-co/beancount-io) into .agents/skills/pm in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add bex-co/beancount-io --skill pm -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pm, .gemini/skills/pm, .github/skills/pm and .opencode/skills/pm in your project.
SKILL.md names no scripts, command-line tools or credentials: Pm is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(ls:*), Bash(find:*), Bash(cat:*).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
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.
Pm is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Pm: Pad (PerpetualSoftware/pad, 186 stars), Andreessen (alirezarezvani/claude-skills, 28k stars), AI Team Orchestration (github/awesome-copilot, 40k stars) and Idea Refinement (addyosmani/agent-skills, 103k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
bex-co (a GitHub organization) maintains it in bex-co/beancount-io, which has 295 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 7, 2026.
Source: bex-co/beancount-io on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.