A growing collection of opinionated tools for shipping AI into real-world domains. Each tool ships in two shapes: a Claude Code skill, and an importable schema or library, so the same artifacts can be produced by an agent and consumed by an app.
| Skill | Status | Purpose |
|---|---|---|
north-star |
v0.2 (draft) | Establishes a project's mission and gut-check before brand or implementation work. Conversation-driven; produces a 3-5 sentence paragraph artifact with typed YAML frontmatter. |
panel-review |
v0.1 (draft) | Multi-agent code review of a PR or current-branch diff. Three-model fan-out (Opus, Sonnet, Haiku), discrete severity, Sonnet confidence recheck plus comment polish in one pass, dev approval gate before posting. Worktree-isolated. Build log committed alongside the PR. Optional braintrust trace logging. |
- Dual-shaped tools. Every entry exposes both an agent-facing surface (a skill) and an app-facing surface (a schema or library). The same artifact can be produced inside Claude Code and consumed by a downstream application.
- Opinionated, not configurable. Each tool encodes a specific point of view and refuses to be a do-it-all framework.
- Markdown plus YAML frontmatter as the lingua franca. Artifacts are human-readable markdown with typed YAML frontmatter, parseable by any consumer.
Changes go through pull requests. Direct pushes to main are not allowed.
Workflow:
- Cut a branch from
main. - Make changes; run
npm testandnpm run validate:skillslocally before pushing. - Open a PR.
- Run a Claude Code review on the PR before merging. Use the
/reviewskill (or equivalent automated reviewer) to surface drift, missing tests, design issues, and style violations before a human reviewer looks at it. - Wait for CI to pass: skill-shape validator, unit tests, and braintrust integration must all be green.
- Address review findings.
- Merge.
Branch protection on main enforces these rules at the GitHub layer (PR required, CI must pass, no force-pushes, no direct commits).
The panel-review skill ships with optional braintrust trace logging. CI's Braintrust integration job smoke-tests the SDK on every PR, so the secret must be set before merging anything that touches the trace surface.
Setup (one time):
# Local: in ~/.bashrc or your shell rc
export BRAINTRUST_API_KEY=<your key from braintrust.dev>
# Repo secret: required for CI
gh secret set BRAINTRUST_API_KEY --repo mollyretter/forward-deployed-engineer-toolkitThe project name fdet-panel-review is hardcoded for v0.1. Create the project in braintrust.dev before the first CI run; the SDK will not auto-create it.
scripts/validate-skills.mjs runs in CI on every PR. For each directory under skills/ it checks:
- A
SKILL.mdexists and starts with valid YAML frontmatter - Required frontmatter fields are present and non-empty:
name,description namematches the directory namedescriptioncontains no em dashes (style preference; em dashes interrupt scannability and are hard to read aloud)- A sibling
README.mdexists
Run it locally with npm run validate:skills.
npm test runs vitest on every *.test.ts file. Each skill that ships a TypeScript schema (schema.ts) should also ship schema.test.ts with at minimum: validator accepts a fully-shaped object, validator rejects each missing or wrong-typed field, parser behaves as documented (throws if it's a stub, parses correctly otherwise).
Tests are deliberately less intense than evaluators. They catch structural and type-level drift, not the semantic quality of a skill's outputs. Semantic quality is checked by the cross-model review that's built into each skill's lock phase, plus eventual full evals once a skill produces enough artifacts to graded against a dataset.
MIT. See LICENSE.