configurelisted
Install: claude install-skill perkzen/fabrika
# Configure
The host writes `.fabrika/config.json`; you supply the fields that cannot be
shipped in a template because they belong to this repo: **base**, **install**,
**gate**, **capture** and **provider**. Return them as structured output. Write
no files — not the config, not a scratch note.
The gate matters more than the rest. The host runs it after every stage
that changes code, and a failing step goes back to the agent as "fix it". A
step that does not exist here, or that is already red on an untouched checkout,
teaches the agent to invent a script to go green and burns the run. **An empty
gate is better than a wrong one.**
## base
The branch pull requests target, as a remote ref:
```bash
gh repo view --json defaultBranchRef -q .defaultBranchRef.name
```
Fall back to `git symbolic-ref --short refs/remotes/origin/HEAD` (only set if
someone ran `git remote set-head`), then to `main`. Prefix it with the remote:
`origin/main`. If the repo's convention is a long-lived integration branch
(`develop`, `staging`) and PRs target that, use it and say so in a note.
## install
From the lockfile, not from what the README suggests:
| Lockfile | install |
| --- | --- |
| `pnpm-lock.yaml` | `pnpm install --frozen-lockfile` |
| `yarn.lock` | `yarn install --immutable` |
| `bun.lock`, `bun.lockb` | `bun install --frozen-lockfile` |
| `package-lock.json` | `npm ci` |
Another ecosystem: whatever the CI workflow's install step runs. No dependency
step at all: omit the field.
## gat