
fablecodex-workflow
Evidence-based workflow gates for Codex with goal ledgers, findings tracking, and Fable-inspired discipline.
- Installs
- 219
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/reason-machines/codex-skills --skill fablecodex-workflow- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads fablecodex-workflow automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
FableCodex Workflow
Skill by ara.so — Codex Skills collection.
FableCodex is a Codex plugin that adds Fable-inspired operating habits: inspect first, track goals, record evidence, close review findings, and verify before claiming completion. It provides workflow discipline through local ledgers, evidence checkpoints, and verification gates.
Key principle: The skill improves discipline, not raw model capability. It's useful when the cost of a missed step is higher than the cost of a little process.
Installation
Install stable release:
codex plugin marketplace add baskduf/FableCodex --ref v0.4.1
codex plugin add codex-fable5@fablecodex
Development version:
codex plugin marketplace add baskduf/FableCodex --ref main
codex plugin add codex-fable5@fablecodex
Local development:
codex plugin marketplace add ~/path/to/FableCodex
codex plugin add codex-fable5@fablecodex
Restart Codex after installation.
Basic Usage
Invoke the skill in your Codex prompt:
@codex-fable5 Use this skill to implement the change.
Create a goal ledger if the work has multiple steps.
Track findings before final completion.
Run the project tests before saying it is done.
Lighter review mode:
@codex-fable5 Review this quickly.
Do not create a goal ledger. Check the key evidence and report only actionable findings.
Workflow Gates
When you invoke @codex-fable5, Codex applies this workflow:
- Classify the task before acting
- Inspect workspace, files, tools, or cited sources
- Use Codex-native tools instead of relying on memory
- Track goals with evidence checkpoints for long work
- Track findings for review-sensitive work
- Verify with tests, lint, typecheck, screenshots, command output
- Report what changed, what was verified, what risk remains
Goal Ledger
For multi-step work, FableCodex maintains state in .codex-fable5/goals.json.
Create Goal Ledger
# Add plugin bin to PATH
export PATH="$PWD/plugins/codex-fable5/bin:$PATH"
# Create goal ledger
codex-fable5 goals create --brief "Database migration" \
--goal "inspect::Review current schema and migrations" \
--goal "change::Add new migration file" \
--goal "verify::Run migration and test queries"
Work Through Goals
# Show next goal to work on
codex-fable5 goals next
# Mark goal complete with evidence
codex-fable5 goals checkpoint \
--id G001 \
--status complete \
--evidence "Reviewed schema.sql and migrations/001_init.sql; current schema has users and posts tables."
# Move to next goal
codex-fable5 goals next
Final Verification
Final goals require verification evidence:
codex-fable5 goals checkpoint \
--id G003 \
--status complete \
--evidence "Created migration 002_add_comments.sql and ran against test DB." \
--verify-cmd "psql test_db -f migrations/002_add_comments.sql && pytest tests/test_db.py -v" \
--verify-evidence "Migration applied successfully, all 12 tests passed."
Goal Statuses
pending: Not startedactive: In progresscomplete: Done with evidencefailed: Could not completeblocked: Waiting on external dependency
Findings Gate
Findings are review issues that must not be lost. Stored in .codex-fable5/findings.json.
Add Finding
codex-fable5 findings add \
--title "SQL injection vulnerability in search" \
--severity high \
--source review \
--location "src/db/queries.py:45" \
--evidence "String concatenation used for WHERE clause instead of parameterized query."
Severity levels: low, medium, high, critical
Resolve Finding
Only resolve after fix and verification:
codex-fable5 findings resolve \
--id F001 \
--evidence "Converted search query to use parameterized statements with cursor.execute(query, params)." \
--verify-cmd "pytest tests/test_db_security.py -v -k test_sql_injection" \
--verify-evidence "Security test passed: no injection detected."
Show Next Finding
codex-fable5 findings next
Shows highest-priority open finding.
Run Findings Gate
codex-fable5 findings gate
Gate fails while open or blocked findings remain. Use before final completion.
Status Overview
Check overall progress:
codex-fable5 status
Shows:
- Current goal state
- Open findings count by severity
- Blocked items
Prompt Patterns
Strict Implementation
@codex-fable5 Run this strictly.
Use a goal ledger, record any review findings, and do not finish until tests and findings gate pass.
Task: Migrate authentication from JWT to OAuth2
Analysis Only
@codex-fable5 Analyze only.
Do not edit files. Give findings with file and line references.
Review the payment processing code for security issues.
Implementation with Limits
@codex-fable5 Implement the fix.
Do not commit, push, or delete branches.
Run unit tests and report any residual risk.
Fix the memory leak in the worker pool.
Debugging
@codex-fable5 Debug this failure.
Reproduce it first, keep multiple hypotheses, gather disconfirming evidence, then fix and verify.
CI failing on test_concurrent_writes
Quick Review
@codex-fable5 Review this PR quickly.
Focus on security and correctness. Report high/critical findings only.
Command Reference
| Command | Purpose |
|---|---|
codex-fable5 status | Show findings and goal progress |
codex-fable5 goals create | Create multi-step goal ledger |
codex-fable5 goals next | Start or resume next goal |
codex-fable5 goals checkpoint | Mark goal status with evidence |
codex-fable5 findings add | Record review finding |
codex-fable5 findings next | Show highest-priority open finding |
codex-fable5 findings resolve | Close finding with verification |
codex-fable5 findings gate | Fail if open/blocked findings remain |
Local State Files
FableCodex writes local state under .codex-fable5/:
goals.json: Goal plan and evidencefindings.json: Review findings and closeoutledger.jsonl: Append-only event history
These files are local working state. Add .codex-fable5/ to .gitignore unless you want to preserve task transcripts.
Python API
The helpers are Python scripts with stdlib-only dependencies.
Goals Helper
# From plugins/codex-fable5/skills/codex-fable5/scripts/codex_goals.py
import json
import sys
from pathlib import Path
# Create goal ledger
goals_data = {
"brief": "API refactor",
"goals": [
{
"id": "G001",
"phase": "inspect",
"description": "Review existing API endpoints",
"status": "pending"
}
]
}
goals_file = Path(".codex-fable5/goals.json")
goals_file.parent.mkdir(parents=True, exist_ok=True)
goals_file.write_text(json.dumps(goals_data, indent=2))
# Checkpoint goal
data = json.loads(goals_file.read_text())
for goal in data["goals"]:
if goal["id"] == "G001":
goal["status"] = "complete"
goal["evidence"] = "Reviewed 12 endpoints in api/v1/"
goal["completed_at"] = "2026-06-17T10:30:00Z"
goals_file.write_text(json.dumps(data, indent=2))
Findings Helper
# From plugins/codex-fable5/skills/codex-fable5/scripts/codex_findings.py
import json
from pathlib import Path
# Add finding
findings_data = {
"findings": [
{
"id": "F001",
"title": "Missing error handling",
"severity": "medium",
"status": "open",
"source": "review",
"location": "src/api/handlers.py:89",
"evidence": "No try-except around database call",
"created_at": "2026-06-17T10:45:00Z"
}
]
}
findings_file = Path(".codex-fable5/findings.json")
findings_file.parent.mkdir(parents=True, exist_ok=True)
findings_file.write_text(json.dumps(findings_data, indent=2))
# Resolve finding
data = json.loads(findings_file.read_text())
for finding in data["findings"]:
if finding["id"] == "F001":
finding["status"] = "resolved"
finding["resolution"] = "Added try-except with proper error logging"
finding["verify_cmd"] = "pytest tests/test_error_handling.py -v"
finding["verify_evidence"] = "All error handling tests passed"
finding["resolved_at"] = "2026-06-17T11:00:00Z"
findings_file.write_text(json.dumps(data, indent=2))
When to Use FableCodex
✅ Use for:
- Multi-step implementation or refactoring
- Debugging where root cause is not obvious
- CI failures, release work, migrations
- Security-sensitive changes
- Reviews where unresolved findings should block completion
- Converting Claude/Fable-style prompts to Codex
❌ Skip for:
- Short answers
- Tiny single-file edits
- Brainstorming
- Tasks where ledger process is heavier than the work
Configuration
No configuration file required. Control behavior through prompt instructions.
Environment Variables
If using optional provider bridge:
export ANTHROPIC_API_KEY=your_key_here
export LITELLM_GATEWAY_URL=http://localhost:8000
See plugins/codex-fable5/skills/codex-fable5/references/provider-bridge.md for routing setup.
Testing
Run the test suite:
python3 -m unittest discover -s tests -v
Test individual helpers:
python3 -m unittest tests.test_goals
python3 -m unittest tests.test_findings
Coverage Accounting
Check source-heading coverage against CLAUDE-FABLE-5.md:
python3 plugins/codex-fable5/skills/codex-fable5/scripts/fable_coverage.py \
--source /path/to/CLAUDE-FABLE-5.md
Target is 100% source-heading accounting (not model-weight parity).
Troubleshooting
Command not found
If codex-fable5 is not found:
# Option 1: Add to PATH
export PATH="$PWD/plugins/codex-fable5/bin:$PATH"
# Option 2: Use full path
plugins/codex-fable5/bin/codex-fable5 status
Goals file corrupted
# Backup and recreate
cp .codex-fable5/goals.json .codex-fable5/goals.json.bak
codex-fable5 goals create --brief "Recovery" --goal "inspect::Assess state"
Findings gate failing
Check open findings:
codex-fable5 status
codex-fable5 findings next
Resolve all findings before running gate.
Plugin not loading
# Restart Codex
codex restart
# Check plugin list
codex plugin list
# Reinstall if needed
codex plugin remove codex-fable5
codex plugin add codex-fable5@fablecodex
Real-World Example
Complete workflow for a database migration:
# 1. Create goal ledger
codex-fable5 goals create --brief "Add user roles" \
--goal "inspect::Review schema and existing migrations" \
--goal "design::Plan role system design" \
--goal "change::Create migration and update models" \
--goal "verify::Test migration and queries"
# 2. Work through goals
codex-fable5 goals next
# ... do inspection work ...
codex-fable5 goals checkpoint --id G001 --status complete \
--evidence "Reviewed schema.sql; users table has no role column. Last migration is 005_add_indexes.sql"
codex-fable5 goals next
# ... design role system ...
codex-fable5 goals checkpoint --id G002 --status complete \
--evidence "Designed enum role type (admin, user, guest) and roles table with foreign key to users"
# 3. Add finding during implementation
codex-fable5 findings add \
--title "Migration needs rollback path" \
--severity high \
--source self \
--location "migrations/006_add_roles.sql" \
--evidence "No down migration provided for role changes"
# 4. Complete implementation
codex-fable5 goals checkpoint --id G003 --status complete \
--evidence "Created 006_add_roles.sql with up and down migrations. Updated User model."
# 5. Resolve finding
codex-fable5 findings resolve --id F001 \
--evidence "Added down migration that drops roles table and removes role column" \
--verify-cmd "psql test_db -f migrations/006_add_roles.sql && psql test_db -f migrations/006_add_roles_down.sql" \
--verify-evidence "Both up and down migrations ran successfully"
# 6. Final verification
codex-fable5 goals checkpoint --id G004 --status complete \
--evidence "Ran migration against test database and verified role queries" \
--verify-cmd "pytest tests/test_user_roles.py -v" \
--verify-evidence "All 8 role tests passed"
# 7. Run gates
codex-fable5 findings gate
codex-fable5 status
# All complete, ready to commit
License
AGPL-3.0-or-later. See project LICENSE and NOTICE files.
FableCodex adds workflow discipline to Codex without changing model weights or capabilities. It's a procedural skill for higher-stakes work where verification and evidence matter.
FAQ
What does the fablecodex-workflow skill do?
Evidence-based workflow gates for Codex with goal ledgers, findings tracking, and Fable-inspired discipline.
How do I install fablecodex-workflow?
Run npx skills add https://github.com/reason-machines/codex-skills --skill fablecodex-workflow in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/fablecodex-workflow/ (personal) or .claude/skills/fablecodex-workflow/ (project).
Which AI agents can use fablecodex-workflow?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is fablecodex-workflow safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains fablecodex-workflow?
It is published by reason-machines in reason-machines/codex-skills. It has 219 recorded installs.
More from reason-machines/codex-skills
academic-research-skills-codex
reason-machines/codex-skills
Open the skill to read its SKILL.md instructions.
codexplusplus-launcher
reason-machines/codex-skills
Open the skill to read its SKILL.md instructions.
codex-plugin-claude-code
reason-machines/codex-skills
Open the skill to read its SKILL.md instructions.
awesome-codex-skills-curator
reason-machines/codex-skills
Open the skill to read its SKILL.md instructions.
codex-plusplus-tweak-system
reason-machines/codex-skills
Open the skill to read its SKILL.md instructions.
awesome-codex-subagents
reason-machines/codex-skills
Open the skill to read its SKILL.md instructions.
Popular productivity & automation skills
agent-browser
vercel-labs/agent-browser
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
lark-doc
open.feishu.cn
飞书云文档(Docx / Wiki)内容操作:读取、创建、编辑文档,插入或下载图片附件,以及操作思维笔记。用户提供文档 URL/token(包括 doubao.com 的 /docx/、/wiki/)时使用;按 URL 路径/token 而非域名路由;/page/ 是妙搭应用,非飞书云文档。文档内嵌资源按读取参考中的统一规则分流。独立评论操作走 lark-drive;随正文读取评论使用 docs +fetch。表格或 Base 内部数据操作不在本 skill。
lark-base
open.feishu.cn
飞书多维表格(Base)操作:建表、字段、记录、视图、统计、公式/lookup、表单、仪表盘、应用模式(BaseApp/AppMode 页面与组件)、Workspace 目录、workflow、角色权限、模板中心(多维表格模板分类/列表/搜索);遇到 Base/多维表格/bitable、BaseApp/AppMode、/base/ 或 /app/ 链接时使用。BaseApp 不走 lark-apps;文件导入/导出转 lark-drive,认证/授权转 lark-shared。
lark-drive
open.feishu.cn
飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、查询权限设置、评论/权限/订阅、标题、版本、飞书文档密级标签(secure labels)和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token、判断链接类型/真实 token/标题,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。
lark-shared
open.feishu.cn
Use for lark-cli setup/auth tasks: auth login/status/logout, user vs bot identity, business-domain permissions (--domain, including all/docs/drive), missing scopes, revoking authorization, or handling notice JSON.
lark-im
open.feishu.cn
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。