fen-maintainer
Development and maintenance toolkit for the Fen codebase.
Install
mkdir -p .claude/skills/fen-maintainer && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/18095" && unzip -o skill.zip -d .claude/skills/fen-maintainer && rm skill.zipInstalls to .claude/skills/fen-maintainer
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Develop, test, and maintain the Fen repository.Key capabilities
- →Develop Fennel source code
- →Manage launcher and development workflows
- →Maintain documentation and tests
- →Manage extensions for the Fen repository
- →Run focused tests by file, directory, or name
- →Reload source edits during interactive runs
How it works
The skill provides workflows and commands for developing, testing, and maintaining the Fen repository, including source-checkout development and test execution.
Inputs & outputs
When to use fen-maintainer
- →Run Fen tests
- →Manage extensions
- →Execute launcher development workflow
- →Reload source edits
About this skill
Fen Maintainer
Use this for maintainer work in fen: Fennel source, launcher/dev workflows, docs, tests, extensions, and distribution plumbing.
Workflow
Develop through the single-file runtime plus source overlays:
make dev # uses FEN_BIN or fen on PATH
make dev-nix # builds .#fen, then runs scripts/dev/fen-dev
scripts/dev/fen-dev sets FEN_DEV_PATH for packages/{core,util,fen}/src and FEN_EXTENSION_ROOT for extensions/.
After editing .fnl, use /reload; do not rebuild generated Lua just to test source edits.
Checks
Run the smallest useful check first:
fennel scripts/test/fennel-check.fnl
make test TESTS=path/to/test.fnl
make test BUSTED_ARGS='--filter=foo'
make test
make check
Useful test targets:
make test-list
make test-shuffle REPEAT=3
FEN_INCLUDE_SMOKE_TESTS=1 make test
TESTS selects files/directories.
BUSTED_ARGS is for runner flags such as --filter, --name, --tags, --shuffle, --repeat, and --list.
Directory-focused runs skip tests/smoke/ unless FEN_INCLUDE_SMOKE_TESTS=1 is set or a smoke file is passed explicitly.
Use Nix for reproducible/binary validation:
nix build .#fen --no-link
nix flake check
Live-provider smoke when relevant:
FEN_BIN=/path/to/fen make smoke
TUI tests
Fast deterministic TUI tests live under extensions/adapters/presenters/tui/tests/ and stub termbox2 via fen.testing.tui.
Use them for viewport logic, input/key state, render rows, cache invalidation, and regressions; they must not open a real terminal.
For whole-frame assertions, install the capture stub:
(install-termbox-stub! {:capture? true :cols N :rows N})
Render with paint.paint-frame! and assert with screen-lines or presented-screen-lines.
Reserve make test-pty for opt-in real-PTY integration/perf smoke.
Rules
- Do not hand-edit or check in generated
dist/trees. - Keep Make targets usable without Nix unless the target name says
nix. - Keep
nix build .#fenas the production binary path. - Project extensions live in
.fen/extensions; user-global extensions live in${XDG_CONFIG_HOME:-~/.config}/fen/extensions. - Update embedded first-party extension manifests and reload/module lists when needed.
- Preserve hot reload: split state from behavior and avoid captured stale function references.
- Keep long work cooperative by passing
yield!/?yield-fnthrough network, subprocess, reload/discovery, and large scans.
Architecture
Before structural work, read CLAUDE.md core parsimony and docs/architecture.md#design-principles.
While core-parsimony is open, prefer existing events/register mechanisms, promote helpers to fen.util.* on second use, keep policy/data out of packages/core, and keep main.fnl CLI-entry only.
After module moves, run:
make graphs
sed -n '1,220p' docs/generated/graphs/summary.md
When not to use it
- →When hand-editing or checking in generated `dist/` trees
- →When Make targets are expected to work without Nix for Nix-specific targets
- →When adding first-party extensions without updating the embedded manifest registry
Limitations
- →Cannot hand-edit or check in generated `dist/` trees
- →Make targets with `nix` in their name require Nix
- →Requires updating embedded manifest registry for first-party extensions
How it compares
This skill offers a specialized workflow for Fen repository maintenance, focusing on source-checkout development and efficient testing, unlike general development practices.
Compared to similar skills
fen-maintainer side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| fen-maintainer (this skill) | 0 | 15d | Review | Advanced |
| command-development | 16 | 8mo | Review | Intermediate |
| skill-forge | 11 | 8mo | Review | Intermediate |
| codex-skill | 12 | 4mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
command-development
anthropics
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code.
skill-forge
WilliamSaysX
Automated skill creation workshop with intelligent source detection, smart path management, and end-to-end workflow automation. This skill should be used when users want to create a new skill or convert external resources (GitHub repositories, online documentation, or local directories) into a skill. Automatically fetches, organizes, and packages skills with proactive cleanup management.
codex-skill
feiskyer
Use when user asks to leverage codex, gpt-5, or gpt-5.1 to implement something (usually implement a plan or feature designed by Claude). Provides non-interactive automation mode for hands-off task execution without approval prompts.
agent-factory
alirezarezvani
Claude Code agent generation system that creates custom agents and sub-agents with enhanced YAML frontmatter, tool access patterns, and MCP integration support following proven production patterns
subagent-driven-development
davila7
Use when executing implementation plans with independent tasks in the current session
peekaboo
openclaw
Capture and automate macOS UI with the Peekaboo CLI.