Premortem
joetawil7/first-pass
Run before writing or changing code for any feature, bug fix or refactor that touches data, jobs, money, outside services or user-facing behaviour.
The meta skill. An agent skill from garrytan/gbrain.
$ npx skills add garrytan/gbrain --skill skillify -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install garrytan/gbrain skillify --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/garrytan/gbrain.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/skillify .claude/skills/skillify && 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 "skillify" agent skill from https://github.com/garrytan/gbrain/tree/master/skills/skillify into .claude/skills/skillify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skillify", 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/garrytan/gbrain/tree/master/skills/skillifyType 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 garrytan/gbrain --skill skillify -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install garrytan/gbrain skillify --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gbrain.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/skillify .agents/skills/skillify && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "skillify" agent skill from https://github.com/garrytan/gbrain/tree/master/skills/skillify into .agents/skills/skillify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skillify", 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 garrytan/gbrain --skill skillify -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install garrytan/gbrain skillify --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gbrain.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/skillify .cursor/skills/skillify && 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 "skillify" agent skill from https://github.com/garrytan/gbrain/tree/master/skills/skillify into .cursor/skills/skillify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skillify", 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/garrytan/gbrain.git --path skills/skillify--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 garrytan/gbrain --skill skillify -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install garrytan/gbrain skillify --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gbrain.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/skillify .gemini/skills/skillify && 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 "skillify" agent skill from https://github.com/garrytan/gbrain/tree/master/skills/skillify into .gemini/skills/skillify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skillify", 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 garrytan/gbrain skillifyInstalls 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 garrytan/gbrain --skill skillify -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/garrytan/gbrain.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/skillify .github/skills/skillify && 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 "skillify" agent skill from https://github.com/garrytan/gbrain/tree/master/skills/skillify into .github/skills/skillify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skillify", 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 garrytan/gbrain --skill skillify -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install garrytan/gbrain skillify --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garrytan/gbrain.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/skillify .opencode/skills/skillify && 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 "skillify" agent skill from https://github.com/garrytan/gbrain/tree/master/skills/skillify into .opencode/skills/skillify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "skillify", 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.
skillifyThe meta skill. An agent skill from garrytan/gbrain.
Skillify is an agent skill from garrytan/gbrain. The meta skill. Turn any raw feature into a properly-skilled, tested, resolvable unit of agent capability. Idempotent: running on an existing skill improves it (bug fix, new input, quality pass) instead of starting from scratch. Every skill declares an EVAL CONTRACT (its goal + skill-specific dimensions + hard-fails) so the cross-modal eval judges THIS skill's real purpose, not generic slop. Cross-modal eval runs BEFORE tests: 3 frontier models from different providers critique the output against the contract…
Its SKILL.md is about 7.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file.
It sits in Development, covering Debugging and Background jobs. The repository describes itself as: Garry's Opinionated OpenClaw/Hermes Agent Brain. The licence is MIT.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5b58910. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
jqbunFrom 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 these keys or tokens, usually read from environment variables:
OPENAI_API_KEYANTHROPIC_API_KEYGOOGLE_GENERATIVE_AI_API_KEYTOGETHER_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Skillify loads about 7.5k tokens when it runs. Until then it costs about 208 tokens; SKILL.md has 2,917 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 garrytan/gbrain at commit 5b58910, republished under its MIT licence (© garrytan). 2,917 words, ~7,527 tokens.
.claude/skills/skillify/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Relationship to
/cross-modal-review: That skill is the manual mid-flow "second opinion" gate (one model reviews work product before commit). This skill's Phase 3 below usesgbrain eval cross-modalinstead — three different-provider frontier models score-and-iterate on a documented dimension list before tests cement behavior. Use/cross-modal-reviewfor ad-hoc second opinions; use Phase 3 here when skillifying a feature.
A feature is "properly skilled" when all 15 checklist items (0 + 1–14; 3b
rides with item 3) pass. gbrain skillify check audits the mechanical items
(1–11); items 0, 3b, 12, 13, and 14 are procedural gates the agent verifies
directly. Item 3 (cross-modal eval) is informational in the audit — it does
not gate gbrain skillify check, but a missing or stale receipt is surfaced
so the user knows where the gate stands.
Idempotency guarantee: skillify can run on the same skill any number of times. Each run:
No-regression law: any edit to a skill must score ≥ the previous iteration's cross-modal eval on the same task and dimensions. Forward only, never back (Phase 3.5).
Other skills and workflows delegate to this checklist — reference items by
number (e.g. "run skillify items 4–6") against skills/skillify/SKILL.md.
The numbering is stable; additive changes only.
□ 0. Eval contract — skill declares goal + skill-specific dimensions + hard-fails (Phase 2.5)
□ 1. SKILL.md — skill file with frontmatter + contract + phases
□ 2. Code — deterministic script if applicable
□ 3. Cross-modal eval — 3 frontier models from 3 providers critique output vs the contract; informational in the audit
□ 3b. No-regression gate — new eval scores ≥ the previous iteration (forward only; Phase 3.5)
□ 4. Unit tests — cover every branch of deterministic logic
□ 5. Integration tests — exercise live endpoints
□ 6. LLM evals — quality/correctness cases for LLM-involving steps
□ 7. Resolver trigger — entry in skills/RESOLVER.md with real user trigger phrases
□ 8. Resolver eval — test that triggers route to this skill
□ 9. Check-resolvable — DRY + MECE audit, no orphans
□ 10. E2E test — smoke test: trigger → side effect
□ 11. Brain filing — if it writes pages, entry in brain/RESOLVER.md
□ 12. Scheduled-run observability — if the skill backs a cron/recurring job, runs route through minions so they are logged and inspectable (Phase 6)
□ 13. Scheduled-task re-run — if the skill backs a cron, an edit re-runs a representative task + evals it (Phase 3.5)
□ 14. Plugin membership — record the skill in openclaw.plugin.json OR skills/plugin-exclusions.json (the membership test requires exactly one)Before anything, determine the mode.
Check:
If ANY answer is no, it's a script, not a skill — stop here. Do not scaffold, write a SKILL.md, run evals, or write tests for it. Tell the user why and move on.
Scope check (upper bound): one skill = one capability = one coherent trigger family. If the target spans multiple distinct intents users would invoke separately ("run the build" / "roll back the deploy" / "notify the team" are three intents, not one), do NOT build one skill covering them all. Stop, propose splitting into separate skillify targets, and ask the user which one to skillify first.
DRY/MECE pre-check: before scaffolding, grep skills/RESOLVER.md and the
skill manifest for overlapping trigger phrases and near-duplicate
descriptions. If a proposed trigger collides with an existing skill, prefer
merging — add a trigger, mode, or phase to the existing skill, bump its minor
version, and run this checklist on the merged result — over creating a
near-duplicate. If you create a separate skill despite overlap, record the
one-sentence distinction in the new SKILL.md. gbrain check-resolvable
(Phase 5) is the backstop that catches what the pre-check misses.
This is the idempotent path. Triggered when running skillify on a skill that already has a SKILL.md, when a bug was found, when the user gave feedback or new input, or when a quality pass is requested.
Improvement protocol:
skills/<slug>/SKILL.md, the skill's script
(whatever path SKILL.md references), routing-eval.jsonl, and
test/<slug>.test.ts.Bug fix template (add to the skill's SKILL.md):
## Bug: [Date] — [Short description]
- **What happened:** [Concrete failure]
- **Root cause:** [Why]
- **Fix:** [What changed]
- **Hard rule added:** [New constraint to prevent recurrence]
- **Tests added:** [List of new test cases]Feature: [name]
Code: [path]
Missing items: [check each of the 15]---
name: my-skill
version: 1.0.0
description: |
One paragraph. What it does, when to use it.
triggers:
- "trigger phrase users actually say"
- "another real trigger"
tools:
- exec
- read
- write
mutating: false # true if it writes to brain/disk
---Body must include: Contract (what it guarantees), Phases (step-by-step), Output Format (what it produces).
Extract deterministic code into scripts/*.ts.
A cross-modal eval is only as good as what you ask it to judge. Generic dimensions catch slop but miss whether the output achieves THIS skill's specific purpose. Every skill carries an explicit eval contract: what the skill is FOR, and HOW to tell if a given output is excellent vs. a failure.
eval_contract:
goal: |
One or two sentences: what this skill is supposed to achieve, for whom, and what
"excellent" looks like in the real world. Be concrete and skill-specific.
dimensions:
- "DIMENSION_NAME — the specific question this dimension answers for THIS skill"
# 3-6 dimensions, tuned to the skill. Example for a per-subject news briefing skill:
# - "FACTUAL_INTEGRITY — is every claim true and verifiable?"
# - "SUBJECT_ANCHOR — is each item tied to something concretely THIS subject's?"
# - "WHY_IT_MATTERS — is the relevance real and specific, not a templated lane label?"
# - "CLICKWORTHY — would the reader actually want to open these links?"
hard_fails:
- "A failure mode that auto-zeroes the eval regardless of other scores."
# e.g. "Any fabricated fact = automatic 1."eval_contract already exists in frontmatter
(or a clear Goal/Contract section in the body), use it. Idempotent runs
reuse the same contract so scores compare apples-to-apples across
iterations — this is what makes the no-regression gate meaningful.eval_contract frontmatter so it's reused and versioned. Editing the
contract is itself a skill edit — re-eval to confirm the new rubric still
scores the current output forward.Pass the contract's goal as --task and its dimensions as --dimensions to
gbrain eval cross-modal. The eval then measures the skill against ITS stated
purpose, not a generic checklist. State hard-fail conditions inside the task
text so judges zero the score when they fire ("If any claim is fabricated, the
output fails regardless of other qualities").
Tests lock in behavior. If the behavior is mediocre, tests lock in mediocrity. Cross-modal eval proves the quality bar FIRST, then tests cement it.
Choose the input that exercises the skill's hardest documented use case. If unsure: use the primary trigger example from SKILL.md, or the most complex real-world input from the last 7 days of memory files.
Run the skill on the representative input. The OUTPUT FILE is what gets evaluated.
gbrain eval cross-modal \
--task "The eval contract's goal, including its hard-fail conditions" \
--dimensions "dim_one,dim_two,dim_three" \
--output skills/<slug>/SKILL.mdThe command runs 3 frontier models from 3 different providers in parallel,
scores the OUTPUT against the TASK on the given dimensions (default: 5
standard dimensions when --dimensions is omitted), and writes a receipt
under ~/.gbrain/.gbrain/eval-receipts/<slug>-<sha8>.json (the sha-8 binds
the receipt to the current SKILL.md content — re-running after edits writes a
new receipt, so every iteration leaves its own baseline).
Default models (override per slot via --slot-a-model, --slot-b-model,
--slot-c-model):
| Slot | Default | Provider |
|---|---|---|
| A | openai:gpt-5.2 | OpenAI |
| B | anthropic:claude-opus-4-7 | Anthropic |
| C | deepseek:deepseek-v4-pro | DeepSeek |
These MUST be frontier models from DIFFERENT providers. Using a single provider's family or budget models defeats the purpose — different families have less correlated blind spots. Model names drift; pin the live aliases at run time. The frontier-only, different-providers rule is the durable part.
Pass criteria (BOTH must be true):
Inconclusive: fewer than 2 of 3 models returned parseable scores. Receipt is still written (forensics) but the gate is not authoritative. Exit code 2; CI wrappers should treat this as "did not run cleanly", not "failed quality gate".
CYCLE 1:
Eval → scores + top 10 improvements
IF pass: → done, write tests
ELSE:
Apply top 10 improvements to the actual file
Log: which improvements applied, what changed
CYCLE 2:
Re-eval the FIXED output (same 3 models, same dimensions)
Compare: before/after scores per dimension (track delta)
IF pass: → done, write tests
ELSE: apply remaining improvements + new ones
CYCLE 3 (final):
Re-eval
IF pass: → ship
ELSE: → ship with KNOWN_GAPS section listing:
- Which dimensions are still below 7
- Which improvements couldn't be resolved
- Why (e.g., "would require architectural change")--cycles 3 in TTY, --cycles 1 in non-TTY (limits scripted
bulk spend in CI loops).--max-tokens 4000.--budget-usd N hard cap is a v0.27.x follow-up TODO.Models resolve through the gbrain AI gateway. Configure once with:
gbrain providers test # see what's configured
gbrain config # set keysOr set env vars: OPENAI_API_KEY, ANTHROPIC_API_KEY,
GOOGLE_GENERATIVE_AI_API_KEY, TOGETHER_API_KEY, etc. The gateway reads
from ~/.gbrain/config.json plus process.env.
3 cycles × 3 models = 9 frontier calls max per run. Expect $1–3 per full run
on default --max-tokens 4000 with frontier-class models. Receipts include
the per-call model identifiers so you can audit retroactively.
A scheduled skill can regress silently and ship a bad output to a live channel before anyone re-checks its quality. The law: we only go forward. An edit that scores worse than the last iteration is a REGRESSION and must NOT ship — revert or re-fix.
Absolute pass (every dimension mean ≥ 7, no single score < 5) is necessary but NOT sufficient. The edited output must also beat the previous iteration's eval on the same task and dimensions.
ls -t ~/.gbrain/.gbrain/eval-receipts/<slug>-*.json | head -5jq '{overall: .aggregate.overall, dims: (.aggregate.dimensions | map_values(.mean))}' <prior-receipt>--task and
--dimensions as the prior run — apples to apples. Reusing the eval
contract (Phase 2.5) makes this automatic.Exception: a pure deterministic bug fix whose behavior is fully locked by new tests may skip the re-eval — but the Phase 7 re-verify still runs. Any edit that changes prose, prompts, or output shape re-evals.
Many skills are invoked by scheduled jobs (briefings, daily digests, monitors, recurring reports). Editing such a skill is NOT done until you have re-run a representative live task through the edited skill and eval'd the real output it would have produced.
gbrain jobs list, plus the scheduler
config per skills/conventions/cron-via-minions.md). If ≥1 job references
the skill, this gate applies.--slug <skill>-<task> so receipts don't
collide with the skill's own SKILL.md receipts.⛔ NO-REGRESSION + RE-RUN GATE: Any edit to this skill must (1) re-run a
representative scheduled task, (2) cross-modal eval the real output,
(3) score ≥ the previous iteration's receipt. A worse score does NOT ship.
We only go forward.NOW that eval has proven quality, write tests that lock it in:
Unit tests — every branch of deterministic logic. Mock external calls. Integration tests — hit real endpoints. Catch bugs mocks hide. LLM evals — quality/correctness for LLM steps. Lighter than cross-modal eval — test specific behaviors.
After creating or updating a skill, re-run gbrain check-resolvable --json
and resolve every flag: two skills confusable by the same trigger get
disambiguating trigger words or a merge; a skill whose triggers are a subset
of another's gets merged or made more specific.
If the skill backs a cron or recurring job, the job MUST run through minions
(gbrain jobs submit from the cron line) rather than a bare shell pipeline,
so every run leaves a job record with status, progress, and logs — ghost
crons that run silently are the #1 source of observability bugs.
Verification:
gbrain jobs list # the scheduled job appears with a status
gbrain jobs get <id> # per-run progress + result is inspectableScheduling patterns live in skills/conventions/cron-via-minions.md and
skills/cron-scheduler/SKILL.md; job-lane mechanics in
skills/minion-orchestrator/SKILL.md.
bun test test/<skill>.test.ts # unit tests
gbrain skillify check skills/<slug>/scripts/<slug>.mjs --json | \
jq '.[] | .items[] | select(.name | contains("Cross-modal"))'
ls -t ~/.gbrain/.gbrain/eval-receipts/<slug>-*.json | head -2 # receipt landed; prior baseline visible
gbrain check-resolvable --json | jq .ok # resolver cleanPhase 0: Mode A — invoked weekly, 50+ lines, clear trigger "summarize this PR"
Phase 1: Audit → SKILL.md missing, no tests, no resolver entry. Score: 1/15
Phase 2: Write SKILL.md + extract script to scripts/summarize-pr.ts
Phase 2.5: Declare eval_contract — goal: reviewer-ready PR summary;
dimensions: file_coverage, test_plan, specificity;
hard-fail: any fabricated claim about the diff
Phase 3: Cross-modal eval cycle 1 (dimensions from the contract) →
gpt-5.2: file_coverage=6, test_plan=4, specificity=5 → "misses file-level diffs"
claude-opus-4-7: file_coverage=7, test_plan=5, specificity=5 → "no test plan in summary"
deepseek-v4-pro: file_coverage=6, test_plan=5, specificity=5 → "template feels generic"
Aggregate: file_coverage=6.3 FAIL, test_plan=4.7 FAIL
Top improvements: add file-level changes, include test plan, use PR context
→ Apply fixes → Cycle 2: file_coverage=8, test_plan=7.5, specificity=7 → PASS
Phase 3.5: First-ever eval → the cycle-2 receipt becomes the baseline
Phase 4: Write 12 unit tests locking in the improved behavior
Phase 5: Add "summarize this PR" trigger to skills/RESOLVER.md
Phase 6: E2E test: feed a real PR URL → verify brain page created.
Not schedule-backed → items 12–13 N/A
Phase 7: All green. Score: every applicable item passingInput: the user reports the skill labeled a date with the wrong weekday
Skill: travel-brief (already has SKILL.md, code, an eval receipt)
Phase 0: Mode B (Improve) — SKILL.md exists, this is a bug fix
Delta: the LLM composed day-of-week from reasoning instead of code
Phase 1: Audit existing artifacts
SKILL.md ✓, code ✓, eval receipt ✓ (but weak — no day-of-week tests)
Unit tests: ✗ (none existed)
Integration tests: ✗ (none existed)
→ Missing: items 4, 5, 6. Plus the actual bug.
Phase 2: Fix the code
- Added a getDayOfWeek(isoDate, tz) helper to the skill's script
- Updated the formatter to use programmatic day names, never model output
- Added HARD RULE to SKILL.md: "NEVER derive day-of-week from LLM reasoning"
- Added a bug entry (template above): date, root cause, fix, tests
- Bumped version 1.0.0 → 1.1.0
Phase 3: Cross-modal eval — skip (pure deterministic bug fix, behavior
locked by new tests; prose unchanged)
Phase 3.5: Re-eval skipped per the 3b exception; Phase 7 re-verify still runs
Phase 4: Write tests
- Unit tests covering every day of the week, timezone edges, formatting
- Integration tests: state I/O, full pipeline, timezone crossing
Phase 5: Resolver — already routed ✓
Phase 6: E2E — existing pipeline still works ✓
Phase 7: All tests green. Bug fixed. Regression locked in.NOT properly skilled until:
Skillify produces three durable artifacts per skill:
skills/<slug>/SKILL.md (carrying its
eval_contract), scripts/<slug>.mjs, routing-eval.jsonl, plus a
test/<slug>.test.ts skeleton. Generated by gbrain skillify scaffold <name> and refined by the agent into a real implementation.~/.gbrain/.gbrain/eval-receipts/<slug>-<sha8>.json. The sha-8 binds each
receipt to the SKILL.md content that produced it, so prior receipts
persist as the no-regression baselines (Phase 3.5). gbrain skillify check surfaces the current receipt's status (found / stale /
missing) as informational.gbrain skillify check: properly skilled |
close — create: <missing items> | needs skillify — run /skillify on <target>. Score is <passed>/<total>. Required items gate the verdict;
the cross-modal item is informational and never blocks PASS.JSON output (gbrain skillify check --json) includes the same fields plus
the per-item detail string, so agents can route on the structured envelope
without parsing prose.
Follow the agent operator protocol for any gbrain error code, exit code, [AGENT] block or notice block. Specific to this skill:
gbrain skillify check reports failing checklist items: fix only those items and re-run; any edit must keep existing tests green (no-regression law).gbrain eval cross-modal fails or lacks a provider key: report the eval as not run; do not mark the skill proven.gbrain check-resolvable reports the new skill unreachable or overlapping: fix its RESOLVER row and re-run. Scaffolding appends the row under a placeholder ## Uncategorized heading; move it into a fitting category.© garrytan, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in skills/skillify of garrytan/gbrain.
Open the folder on GitHubat commit 5b58910
Skillify 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 |
|---|---|---|---|---|---|---|
| Skillify this skillgarrytan/gbrain | 31k | — | ~7.5k | Automated safety check: Pass | MIT | |
| Premortemjoetawil7/first-pass | 112 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Hk Local Logsdeepklarity/harness-kit | 100 | — | ~2.1k | Automated safety check: Notes | MIT | |
| Diagnose Backend BugQoderAI/better-harness | 2.4k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Temporal Developertemporalio/skill-temporal-developer | 230 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Production Log Inspectionbikeindex/bike_index | 308 | — | ~3.6k | Automated safety check: Pass | AGPL-3.0 |
joetawil7/first-pass
Run before writing or changing code for any feature, bug fix or refactor that touches data, jobs, money, outside services or user-facing behaviour.
deepklarity/harness-kit
Inspect and debug errors via logs across the harness-kit monorepo.
QoderAI/better-harness
Diagnose a bounded backend or multi-service failure from GitHub Issues, Jira, Aone, user-provided exports, logs, traces, responses, stack traces, or job records.
temporalio/skill-temporal-developer
Develop, debug, and manage Temporal applications across Python, TypeScript, Go, Java, .NET, Ruby, and Rust.
bikeindex/bike_index
Inspect the Bike Index production Rails logs downloaded by binxlogs and streamed with binxcat web / binxcat worker — JSON-per-request (Lograge) on web plus free-form background-job lines on worker…
mindfold-ai/Trellis
Reach into past AI conversation history through the trellis mem CLI.
garrytan/gbrain
Traces a factual error the user points out back to its source (a brain page, a memory file, SOUL.md or USER.md, or a hallucination) and fixes that source instead of just noting the correction.
garrytan/gbrain
Searches and writes a company-wide knowledge brain through the gbrain CLI, so durable decisions and facts about people, projects and history stay findable beyond one session.
garrytan/gbrain
Ingest links, articles, tweets, and ideas into the brain. An agent skill from garrytan/gbrain.
garrytan/gbrain
Sends what your notes already know about a topic to Perplexity, so the cited web search reports only what is new, such as entity updates or deal changes.
garrytan/gbrain
Migrate a brain from gbrain-base (or any pack) to gbrain-base-v2's 14-canonical-type taxonomy via gbrain onboard --check + the unify-types Minion handler.
garrytan/gbrain
Run gbrain skillpack-check to produce an agent-readable JSON health report for the gbrain install.
Categories
The meta skill. An agent skill from garrytan/gbrain. Skillify is an agent skill from garrytan/gbrain. The meta skill.
Skillify fits situations like: tasks that involve Debugging; tasks that involve Background jobs.
Run `npx skills add garrytan/gbrain --skill skillify -a claude-code`. Or copy the skill folder (skills/skillify in garrytan/gbrain) into .claude/skills/skillify in your project. Claude Code loads it when a task matches its description.
Run `npx skills add garrytan/gbrain --skill skillify -a codex`. Or copy the skill folder (skills/skillify in garrytan/gbrain) into .agents/skills/skillify 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 garrytan/gbrain --skill skillify -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/skillify, .gemini/skills/skillify, .github/skills/skillify and .opencode/skills/skillify in your project.
Going by SKILL.md and its folder, Skillify needs the command-line tools its instructions call (jq and bun) and credentials named OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY and TOGETHER_API_KEY.
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.
Skillify is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 7.5k tokens (SKILL.md is roughly 30k 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 Skillify: Premortem (joetawil7/first-pass, 112 stars), Hk Local Logs (deepklarity/harness-kit, 100 stars), Diagnose Backend Bug (QoderAI/better-harness, 2.4k stars) and Temporal Developer (temporalio/skill-temporal-developer, 230 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
garrytan (a GitHub user) maintains it in garrytan/gbrain, which has 30,605 GitHub stars. The repository holds 47 skills in this directory. The repository was last updated on October 7, 2026.
Source: garrytan/gbrain on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.