A human-centric, extensible framework for collaborating with coding agents.
Make agents follow the same ticket, verification, review, and shipping process your team expects.
Install · How to use · FAQ · Philosophy
Beislið (/ˈpeislɪð/, "BASE-tlith", Icelandic for "the harness") is a workflow harness for coding agents.
It installs portable Markdown skills, but the skills act only as the interface. The product is the lifecycle: shared gates, repo-local config, verification evidence, review loops, and human-in-the-loop checkpoints.
spec → blueprint → implement → verify → review → ship-it
Project workflow lives in .beislid/workflow.md, so a repo can declare its own ticket sources, branch patterns, quality gates, PR review sources, and shipping rules.
Beislið is for developers and teams who want agent-assisted work to be disciplined and reviewable:
- Senior developers who want a repeatable personal workflow instead of one-off prompting.
- Tech leads and staff engineers who want agents in a repo to follow shared team process.
- Teams that need explicit gates before code, claims, review risk, pushes, comments, or PR creation.
It is not a fully autonomous coding mode, a replacement for CI, or a replacement for human review.
| Step | What it prevents |
|---|---|
spec / kickoff |
building the wrong thing from vague requirements |
blueprint |
coding before the approach is named and approved |
implement |
wandering through a large change without a file-level plan |
verify |
claiming done before fresh evidence exists |
review / fresh-eyes |
shipping with obvious local findings, drift, or stale docs |
ship-it |
opening a PR before gates, review, and release notes are ready |
Install Beislið:
git clone git@github.com:sandsower/beislid.git ~/Projects/beislid
~/Projects/beislid/install.shThe installer also links the beislid CLI into ${BEISLID_BIN_DIR:-~/.local/bin}. If that directory is not on PATH, add it or run the checkout's bin/beislid directly.
Then open a project repo and pick the right entry point:
| Situation | Start with |
|---|---|
| Vague idea or unclear product behavior | spec |
| Existing ticket or branch | kickoff |
| Clear requirement, unknown implementation | blueprint |
| Bug, failing test, or unexpected behavior | debug |
| Work is done but not proven | verify |
| Branch is ready for PR | ship-it |
| PR review or QA feedback came back | heard-chef |
For repo-aware ticket, PR, and quality-gate workflows, configure the project first:
setup → doctor → kickoff or ship-it
Basic skills work after install. Repo-aware orchestrators such as kickoff, ship-it, and heard-chef need .beislid/workflow.md when they must read tickets, run configured gates, or interact with PR review sources.
See How to use for more information.
Beislið keeps project policy in the repo:
<repo>/.beislid/workflow.md
Use setup to create or update it. Use doctor to audit it and probe configured capabilities.
A workflow can define:
- issue tracker source and branch pattern
- PR target and review source
- ticket or PR update commands
- scopes and quality gates
- triggered checks such as translation sync or browser compatibility
- guided walkthrough thresholds
See Configuration for details and workflow.md format for the full grammar.
- Shape work:
spec,break-spec,blueprint,poke-holes - Execute safely:
implement,debug,handoff - Check evidence:
verify,review,fresh-eyes,rinse,show-me - Deliver work:
ship-it,heard-chef,pr-patrol,walk-the-diff - Manage config:
setup,doctor
See Skills for the full catalog and Workflows for lifecycle diagrams.
git clone git@github.com:sandsower/beislid.git ~/Projects/beislid
~/Projects/beislid/install.shSymlinks land in:
~/.agents/skills/<name>~/.claude/skills/<name>~/.codex/skills/<name>${BEISLID_BIN_DIR:-~/.local/bin}/beislid
Edit the repo to edit the skills.
CLI commands available now:
beislid install user
beislid install project [path]
beislid status
beislid status project [path]
beislid update
beislid helpProject install defaults to symlink mode. Use beislid install project [path] --copy when the project needs portable local copies instead. With no path, beislid install project targets the git root when run inside a git repo; outside git it targets the current directory and warns. An explicit path is used exactly, even when it sits inside a larger repo. The installer creates all three project-local host dirs:
<project>/.agents/skills<project>/.claude/skills<project>/.codex/skills
It writes <project>/.beislid/project-install.json and warns softly when <project>/.beislid/workflow.md is missing. Copy mode also writes .beislid-owner.json inside each copied skill dir so reruns can refresh only Beislið-owned copies. Unmarked project files or skill dirs are never clobbered, even with --force. Project installs print a suggested .gitignore block by default; pass --write-gitignore to create or replace the managed block idempotently. It does not create workflow config; run the setup skill when repo-aware workflows need it.
Update an existing install from an agent host:
/setup update
Or from the Beislið checkout / CLI:
~/Projects/beislid/install.sh --update
beislid updateUpdate fast-forwards the checkout with git pull --ff-only, aborts if the checkout has uncommitted local changes, preserves prior manifest install targets and opt-ins such as security hooks and Pi show-me, then relinks skills/hooks as needed.
Flags:
--with-security-hooks: enablecredential_guardfor Claude Code--with-pi-show-me: install the Pi extension forshow-me--update: fast-forward the Beislið checkout and re-run install--status: print installed commit and symlink status--project [path]: compatibility sugar for a project install viainstall.sh--copy: copy project-local skills instead of symlinking them--write-gitignore: create or replace the managed project.gitignoreblock--force: repoint/replace existing symlinks. Never clobbers unmarked regular files or directories.
Machine state for user installs lives at ${BEISLID_STATE_DIR:-~/.local/state/beislid}/install.json and records the CLI path when the CLI link is installed or already correct. Project install state lives at <project>/.beislid/project-install.json. Re-running is safe: dangling symlinks are auto-repaired; symlinks pointing at another live target are left alone unless you pass --force. Regular files are never clobbered. Update never touches project-owned .beislid/workflow.md files.
This repo includes a draft formula at packaging/homebrew/beislid.rb. It is for packaging validation and future tap work, not the published install path yet. Full Homebrew support, including publishing and upgrade policy, is tracked in #67.
The CLI is package-layout friendly: it resolves its runtime from the real bin/beislid path, or from BEISLID_HOME when a packaged wrapper points at a separate runtime root. If the runtime subset is incomplete, it prints a layout error instead of failing with a shell source error.
Invocation syntax depends on the host.
- Use the short skill name when your host supports direct invocation:
spec,blueprint,ship-it. - Use slash syntax when your host exposes skills that way:
/spec,/blueprint,/ship-it. - Use namespaced syntax when your host requires it:
/skill:spec,/skill:blueprint. - Natural-language triggers work in some agents, but direct invocation is safest when a gate matters.
- How to use: first-run guide and common paths.
- Workflows: lifecycle diagrams and routing rules.
- Skills: full skill catalog.
- Configuration:
setup,doctor,.beislid/workflow.md, scopes, gates, and probe cache. - Review workflows: review primitives and review/ship/feedback flows.
- FAQ: positioning, comparisons, autonomy, team use, and philosophy.
- Show Me: local HTML evidence and explanation decks.
- Credential guard: optional Claude Code hook for blocking secret-dumping commands.
credential_guardhook: blocks bash commands that dump secrets. Claude Code-specific; the skills themselves are portable markdown.show-mePi extension: typed deck-builder tools, command evidence capture, asset ingestion, browser screenshots when Playwright is installed, and/show-me doctor|list|open|clean. The portable skill still works without Pi.
- Shape unclear product work before implementation design.
- Design before code. No implementation until the approach is named and approved.
- Evidence before claims. No "should work" or "probably fixes". Run it, verify, then ship.
- Root cause before fix. Guessing is rejected. Understand the bug before proposing a patch.
- Keep the human in the loop. Agents can do the work, but people own product direction, risk, review, and release.
Several Beislið skills draw from Matt Pocock's mattpocock/skills, especially:
poke-holes, based on Matt'sgrill-me(renamed to disambiguate from elicitation; in Beislið it pressure-tests an existing plan or design rather than extracting requirements from scratch).spec/break-spec, which overlap with Matt'sto-prdandto-issues.implement, which shares the test-first / vertical-slice philosophy of Matt'stdd.
Beislið diverges by keeping skills agent-agnostic, installing under short unprefixed names, using a local installer/manifest, and organizing the workflow around repo-local project configuration.
See CONTRIBUTING.md.
MIT