{"id":48999935,"url":"https://github.com/redker56/agentforge","last_synced_at":"2026-04-27T05:03:15.101Z","repository":{"id":347574209,"uuid":"1194358374","full_name":"redker56/AgentForge","owner":"redker56","description":"CLI and TUI for managing, categorizing, and syncing reusable skills across AI coding agents and project workspaces.","archived":false,"fork":false,"pushed_at":"2026-04-18T17:00:04.000Z","size":935,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-18T18:39:24.489Z","etag":null,"topics":["agentforge","ai","ai-agent","claude-code","cli","codex","coding-agents","cursor","developer-tools","gemini-cli","openclaw","opencode","qoder","skill-management","skills","terminal-ui","tui","typescript"],"latest_commit_sha":null,"homepage":"https://github.com/redker56/agentforge#readme","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/redker56.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-28T08:42:15.000Z","updated_at":"2026-04-18T17:00:09.000Z","dependencies_parsed_at":"2026-04-18T04:02:33.041Z","dependency_job_id":null,"html_url":"https://github.com/redker56/AgentForge","commit_stats":null,"previous_names":["redker56/agentforge"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/redker56/AgentForge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redker56%2FAgentForge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redker56%2FAgentForge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redker56%2FAgentForge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redker56%2FAgentForge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redker56","download_url":"https://codeload.github.com/redker56/AgentForge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redker56%2FAgentForge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32323215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentforge","ai","ai-agent","claude-code","cli","codex","coding-agents","cursor","developer-tools","gemini-cli","openclaw","opencode","qoder","skill-management","skills","terminal-ui","tui","typescript"],"created_at":"2026-04-18T18:03:29.277Z","updated_at":"2026-04-27T05:03:15.096Z","avatar_url":"https://github.com/redker56.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AgentForge\n\n[English](README.md) | [简体中文](README.zh-CN.md)\n\nA CLI for managing and syncing skills across Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, OpenCode, Qoder, and project workspaces.\n\n[![CI](https://github.com/redker56/agentforge/actions/workflows/ci.yml/badge.svg)](https://github.com/redker56/agentforge/actions/workflows/ci.yml)\n[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![Node.js Version](https://img.shields.io/node/v/%40redker56%2Fagentforge.svg)](package.json)\n\n## Requirements\n\n- Node.js 20 or newer\n- `git` available in `PATH`\n- CI currently covers Ubuntu and Windows on Node 20 / 22 / 24\n\n## Installation\n\n```bash\nnpm install -g @redker56/agentforge\n```\n\nRecommended next steps:\n\n```bash\naf --help\naf completion --install\n```\n\nAgentForge does not automatically modify your shell configuration during installation.\n\nTo enable shell completion explicitly, run:\n\n```bash\naf completion --install\n```\n\nRe-running the same command updates the existing AgentForge completion block in place.\n\nIf shell auto-detection fails, specify it directly:\n\n```bash\naf completion powershell --install\naf completion bash --install\n```\n\n## Commands\n\n### View Commands\n\n```bash\n# List all skills (show user-level and project-level distribution)\naf list skills\n\n# List available Agents (show user-level and project-level skills)\naf list agents\n\n# List registered projects\naf list projects\n\n# List skill categories and counts\naf list categories\n\n# Filter skills by category\naf list skills --category design\n\n# Show only uncategorized skills\naf list skills --uncategorized\n\n# Show skill details\naf show skills \u003cname\u003e\n\n# Show Agent details (and installed skills)\naf show agents \u003cid\u003e\n\n# Show project details (and contained skills, mark import status)\naf show projects \u003cid\u003e\n```\n\n`af list agents` groups project-level skills by project for easier scanning. The project-level count is the total number of skills across all grouped projects.\n\n```text\nclaude - Claude Code\n  Project-level (3):\n    Obsidian:\n      defuddle\n      json-canvas\n    Voice:\n      frontend-design\n```\n\n### Add Commands\n\n```bash\n# Install skill from Git repository\naf add skills \u003crepo-url\u003e [name]\n\n# Install skill from Git subdirectory (supports GitHub/GitLab /tree/ URL)\naf add skills https://github.com/user/repo/tree/main/skills/my-skill\n\n# Install from multi-skill repository (auto-scan and list all skills, supports multi-select)\naf add skills https://github.com/user/skills-collection\n\n# Add custom Agent (interactive guide)\naf add agents\n\n# Add custom Agent with specified ID\naf add agents my-agent\n\n# Add project (interactive guide)\naf add projects\n\n# Add project with specified ID and path\naf add projects my-project /path/to/project\n```\n\n#### af add skills Features\n\n- **Single-skill repository**: Auto-detect and install directly\n- **Root-level skill repository**: Supports repositories whose `SKILL.md` lives at the repository root\n- **Multi-skill repository**: Auto-scan and list all directories containing `SKILL.md`, interactive multi-select installation\n- **Specified subdirectory**: Supports `/tree/` URL format, directly install skill from specified subdirectory\n- **Post-install detection**: If same-name skill exists in Agent directory, auto-link or prompt for handling\n\n### Import Commands\n\n```bash\n# Import skill from project (interactive project and skill selection)\naf import projects\n\n# Import specified skill from project (interactive project selection)\naf import projects \u003cproject-id\u003e\n\n# Import specified skill from project\naf import projects \u003cproject-id\u003e \u003cskill-name\u003e\n\n# Import skill from Agent (interactive Agent and skill selection)\naf import agents\n\n# Import specified skill from Agent (interactive Agent selection)\naf import agents \u003cagent-id\u003e\n\n# Import specified skill from Agent\naf import agents \u003cagent-id\u003e \u003cskill-name\u003e\n```\n\n### Sync Commands\n\n```bash\n# Sync skill to Agent (interactive skill and Agent selection)\naf sync agents\n\n# Sync specified skill (interactive Agent selection)\naf sync agents \u003cskill\u003e\n\n# Sync to specified Agent\naf sync agents \u003cskill\u003e claude\n\n# Sync to multiple Agents\naf sync agents \u003cskill\u003e claude codex gemini\n\n# Specify sync mode\naf sync agents \u003cskill\u003e --mode copy      # Copy\naf sync agents \u003cskill\u003e --mode symlink   # Symbolic link\n\n# Remove Agent sync (interactive selection of synced skills)\naf unsync agents\n\n# Remove sync for specified skill\naf unsync agents \u003cskill\u003e\n\n# Remove sync for specified Agent\naf unsync agents \u003cskill\u003e claude\n\n# Sync skill to project (interactive skill and project selection)\naf sync projects\n\n# Sync specified skill to project (interactive project selection)\naf sync projects \u003cskill\u003e\n\n# Sync to specified project\naf sync projects \u003cskill\u003e my-project\n\n# Sync to multiple projects\naf sync projects \u003cskill\u003e project1 project2\n\n# Specify Agent type\naf sync projects \u003cskill\u003e [projects...] --agent-types claude codex\n\n# Specify sync mode\naf sync projects \u003cskill\u003e [projects...] --mode symlink\n\n# Remove project sync (interactive selection of synced skills)\naf unsync projects\n\n# Remove project sync for specified skill\naf unsync projects \u003cskill\u003e\n\n# Remove sync for specified project\naf unsync projects \u003cskill\u003e \u003cproject-id\u003e:\u003cagent-type\u003e\n```\n\nIf a project does not already contain a known Agent skill directory, pass `--agent-types` explicitly. AgentForge no longer defaults a clean project to Claude.\n\n### Remove Commands\n\n```bash\n# Remove skill\naf remove skills \u003cname\u003e [-y skip confirmation]\n\n# Remove project\naf remove projects \u003cproject-id\u003e\n\n# Remove custom Agent configuration\naf remove agents \u003cagent-id\u003e\n```\n\n`af remove skills` removes the AgentForge skill plus all managed sync copies. `af remove projects` only unregisters the project and clears recorded sync references; project files stay on disk. `af remove agents` only removes the custom Agent configuration and clears AgentForge's sync references; files stay on disk.\n\n### Other Commands\n\n```bash\n# Set skill categories\naf categorize skills \u003cskill-name\u003e design frontend\n\n# Batch set categories for multiple skills\naf categorize skills --skills docx xlsx pptx --categories office files\n\n# Add categories without replacing existing ones\naf categorize skills \u003cskill-name\u003e docs --add\n\n# Remove specific categories\naf categorize skills \u003cskill-name\u003e docs --remove\n\n# Clear all categories\naf categorize skills \u003cskill-name\u003e --clear\n\n# Enable shell completion\naf completion --install\n\n# Print shell completion script without installing it\naf completion bash\n\n# Update skill (refresh from Git source and re-sync)\naf update [skill-name]\n```\n\n### TUI Category Shortcuts\n\n- `[` / `]`: Switch category filter in the Skills tab\n- `c`: Open category editor for the selected skill(s)\n- Skills tab category bar: browse `All`, `Uncategorized`, and every defined category\n\n### TUI Context Skill Lists\n\n- In the `Agents` and `Projects` tabs, press `Enter` to open a real skill list for the focused item\n- Context skill lists support `Space` multi-select plus `i`, `x`, `u`, and `c` for import, unsync, update, and categorize\n- `[` / `]` switches the context filter between `All`, `Imported`, and `Unimported`\n- `Esc` returns to the master Agent / Project list, and `Enter` on an imported skill opens its detail view\n\n## Skill Levels\n\nAgentForge distinguishes two skill levels:\n\n- **User-level skills**: Stored in `~/.agentforge/skills/`, synced to Agent via `af sync`\n- **Project-level skills**: Stored in project's skill directory (e.g., `.claude/skills/`, `.agents/skills/`), independent of user-level\n\n```text\naf list skills output example:\n\n  User-level: Skills synced to Agent\n  Project-level: Same-name skills in project directory\n  Unsynchronized: Not yet synced to any Agent\n\n  my-skill [local]\n    User-level: Claude Code, Codex\n    Project-level: my-project\n      Claude Code\n\n  another-skill [git]\n    Project-level: my-project\n      Codex (different version from AgentForge)\n\n  new-skill [local]\n    Not synced to any Agent\n```\n\n## Sync Modes\n\n- **Copy**: Creates independent copy, stable and reliable, but requires re-sync after updates\n- **Symbolic link**: Links to source file, changes take effect immediately, ideal for developers\n\n\u003e **Note**: `~/.agentforge/skills/` always stores the actual copy of skills, Agent directories are synced from here.\n\u003e\n\u003e On Windows, `--mode symlink` may require Developer Mode or an elevated terminal session.\n\n## Built-in Agents\n\n| Agent | ID | User-level Path | Project-level Directory |\n|-------|-----|-----------|-----------|\n| Claude Code | `claude` | `~/.claude/skills` | `.claude/skills` |\n| Codex | `codex` | `~/.codex/skills` | `.agents/skills` |\n| Gemini CLI | `gemini` | `~/.gemini/skills` | `.gemini/skills` |\n| OpenClaw | `openclaw` | `~/.openclaw/workspace/skills` | `.agents/skills` |\n| Qoder | `qoder` | `~/.qoder/skills` | `.qoder/skills` |\n| OpenCode | `opencode` | `~/.config/opencode/skills` | `.opencode/skills` |\n| Cursor | `cursor` | `~/.cursor/skills` | `.cursor/skills` |\n\nAgentForge treats OpenClaw project-level skills as `.agents/skills`, while user-level sync targets the default OpenClaw workspace at `~/.openclaw/workspace/skills`.\n\nQoder, OpenCode, and Cursor all use directory-per-skill layouts with `SKILL.md`, so they work with the same scanning and sync model as the existing built-in Agents.\n\nBuilt-in agent availability is determined by the user-level skills directory. Project-level folders are scanned only for agents that already exist at the user level.\n\n### Custom Agents\n\nYou can add custom agents via `af add agents`, supporting project-level skill directory name:\n\n```bash\naf add agents\n```\n\nInteractive guide will ask for:\n- Agent ID (e.g., `my-agent`)\n- Display name\n- Skill storage path\n- Project skill directory name (optional)\n\n## Usage Examples\n\n```bash\n# Install skill from Git\naf add skills https://github.com/user/awesome-skills.git\n\n# Install single skill from Git subdirectory\naf add skills https://github.com/user/skills-collection/tree/main/skills/my-skill\n\n# Select and install from multi-skill repository\naf add skills https://github.com/user/skills-collection\n# Auto-lists available skills for interactive selection\n\n# Add custom Agent\naf add agents\n\n# Add project\naf add projects myproject /path/to/my/project\n\n# View skill list\naf list skills\n\n# Import skill from project\naf import projects myproject myskill\n\n# Sync skill to Claude Code\naf sync agents myskill claude\n\n# Sync to multiple Agents\naf sync agents myskill claude codex\n\n# View Agent's skills\naf show agents claude\n```\n\n## Shell Auto-Completion\n\nShell completion is opt-in. If you want it, install it explicitly:\n\n```bash\naf completion --install\n```\n\nSupports PowerShell, Bash, Zsh, Fish.\nRunning the install command again refreshes the existing AgentForge completion block instead of asking you to remove it first.\nOn PowerShell, completed commands such as `af list projects` also suppress the shell's fallback filesystem path completion.\n\n## Skill Format\n\nEach skill is a directory that must contain a `SKILL.md` file:\n\n```text\n~/.agentforge/skills/\n`-- my-skill/\n    |-- SKILL.md          # Main skill file (required)\n    `-- examples/         # Optional example files\n        `-- demo.md\n```\n\n## Data Storage\n\n```text\n~/.agentforge/\n|-- skills/           # Skill storage directory\n|   `-- my-skill/\n|       `-- SKILL.md\n`-- registry.json     # Registration info\n```\n\n## Architecture Notes\n\n- `cli.ts` and `tui.ts` compose concrete infrastructure and inject it into the app layer instead of reading from global singletons.\n- The TUI talks to the app layer through `WorkbenchQueries` and `WorkbenchCommands`, then keeps interaction state inside feature-local Zustand slices.\n- Registry persistence is modeled through `RegistryRepository`, while per-project `.agentforge.json` state is modeled through `ProjectStateRepository`.\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Build\nnpm run build\n\n# Test\nnpm test\n\n# Runtime dependency audit\nnpm run audit:prod\n\n# Full local CI verification\nnpm run verify\n# Same command, named explicitly for CI parity\nnpm run verify:ci\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredker56%2Fagentforge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredker56%2Fagentforge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredker56%2Fagentforge/lists"}