{"id":43228887,"url":"https://github.com/danieldunderfelt/taito-cli","last_synced_at":"2026-02-01T10:01:57.170Z","repository":{"id":333852036,"uuid":"1138973186","full_name":"danieldunderfelt/taito-cli","owner":"danieldunderfelt","description":"A skill manager that also supports skill customization.","archived":false,"fork":false,"pushed_at":"2026-01-21T13:43:24.000Z","size":97,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-21T22:55:56.230Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/danieldunderfelt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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-01-21T10:59:58.000Z","updated_at":"2026-01-21T13:43:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/danieldunderfelt/taito-cli","commit_stats":null,"previous_names":["danieldunderfelt/taito-cli"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/danieldunderfelt/taito-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieldunderfelt%2Ftaito-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieldunderfelt%2Ftaito-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieldunderfelt%2Ftaito-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieldunderfelt%2Ftaito-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danieldunderfelt","download_url":"https://codeload.github.com/danieldunderfelt/taito-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danieldunderfelt%2Ftaito-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28975278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T09:57:52.632Z","status":"ssl_error","status_checked_at":"2026-02-01T09:57:49.143Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-02-01T10:01:53.568Z","updated_at":"2026-02-01T10:01:57.163Z","avatar_url":"https://github.com/danieldunderfelt.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Taito CLI\n\nA CLI for installing customizable [Agent Skills](https://agentskills.io) from GitHub.\n\nAgent Skills are instructions that AI coding assistants can follow to perform specific tasks. The `taito` CLI extends the standard Agent Skills format with support for **customizable skills** that adapt to your project's specific configuration during installation.\n\n## Why Taito?\n\nThere are a few CLI tools for managing agent skills, such as [Vercel's skills CLI](https://skills.sh) and [Agent Skills Manager](https://www.agentskills.in/). However, none of them support customizable skills. If you make a cool skill for your project, it probably has a few project-specific details that won't work for other projects which makes sharing it with other developers difficult. Each developer who adds your skill would need to manually edit the skill to make it work for their project.\n\nTaito makes it easy to customize skills to your project's specific details, while maintaining installability with other CLIs that don't support customization. Simply write your skill, add the Taito skill from this repository (`taito add danieldunderfelt/taito-cli`), and ask your AI agent to make it customizable in the Taito format. Then anyone who adds your skill will be able to customize it to their project's specific details.\n\nAs for features, I can add pretty much anything the other CLI's support. If you have a feature request, please open an issue. Yes, that means they can also add customizable skills as well.\n\nI really hope that they do.\n\nOh btw, \"taito\" is the Finnish word for \"skill\". In case you were wondering.\n\n## Installation\n\n```bash\n# Using npm\nnpm install -g taito-cli\n\n# Or run directly with npx\nnpx taito-cli add owner/repo\n```\n\nThe package includes standalone executables for macOS (Apple Silicon), Linux (x64/arm64), and Windows (x64). No runtime dependencies required.\n\n### Windows Users\n\nThe npm package uses a shell script launcher that works natively on macOS and Linux. On Windows, you have a few options:\n\n1. **Git Bash / WSL** (Recommended): If you have Git for Windows installed, the shell launcher works automatically in Git Bash or through WSL.\n\n2. **Use the .cmd launcher**: After installing, run the CLI using the included batch script:\n\n   ```cmd\n   node_modules\\.bin\\taito.cmd add owner/repo\n   ```\n\n3. **Run the binary directly**: The standalone Windows executable can be run without any launcher:\n\n   ```cmd\n   %APPDATA%\\npm\\node_modules\\taito-cli\\dist\\taito-windows-x64.exe add owner/repo\n   ```\n\n4. **Download the binary**: Download `taito-windows-x64.exe` from the [releases page](https://github.com/danieldunderfelt/taito-cli/releases) and add it to your PATH.\n\n## Quick Start\n\n```bash\n# Install a skill from GitHub (auto-detects your agent)\ntaito add aikoa-platform/agent-skills\n\n# Install a specific skill from a repo containing multiple skills\ntaito add aikoa-platform/agent-skills/react-localization\n\ntaito add aikoa-platform/agent-skills --agent cursor\n\n# Install with preset configuration (non-interactive)\ntaito add aikoa-platform/agent-skills --config ./my-config.toml\n\n# List installed skills\ntaito list\n\n# Remove a skill\ntaito remove react-localization\n```\n\n## How It Works\n\n### Multi-Agent Support\n\n`taito` automatically detects which AI coding assistant you're using and installs skills to the correct location. Supported agents:\n\n- **Cursor** (`.cursor/skills/`)\n- **Windsurf** (`.windsurf/skills/`)\n- **Claude Code** (`.claude/skills/`)\n- **Clawdbot** (`\u003cworkspace\u003e/skills/`) - uses [ClawdHub workspace discovery](https://docs.clawd.bot/tools/clawdhub)\n- **Codex** (`.codex/skills/`)\n- **OpenCode** (`.opencode/skill/`)\n- **GitHub Copilot** (`.github/skills/`)\n- **VS Code** (`.github/skills/`)\n- **Gemini CLI** (`.gemini/skills/`)\n- **Goose** (`.agents/skills/`)\n- **AMP** (`.agents/skills/`)\n- **Trae** (`.trae/skills/`)\n- **Antigravity** (`.agent/skills/`)\n\nIf multiple agents are detected, you'll be prompted to choose which one to install for. You can also explicitly specify an agent with the `--agent` flag.\n\n### Standard Skills\n\nFor standard (non-customizable) skills, `taito` works just like other skill installers: it downloads the skill from GitHub and copies it to the skills directory for your agent.\n\n### Customizable Skills\n\nWhen a skill contains a `.taito/` folder, it becomes customizable. During installation, `taito` will:\n\n1. Detect the `.taito/skill.config.toml` configuration file\n2. Prompt you for values (or use a preset config file)\n3. Render templates with your values\n4. Output the customized skill to the skills directory for your agent\n\nFor example, a localization skill might ask:\n\n- What is your source language?\n- What languages do you support?\n- What format do you use for your translation files?\n- Where are your translation files located?\n\nThe resulting `SKILL.md` will contain instructions tailored to your project.\n\n## CLI Commands\n\n### `taito add \u003csource\u003e`\n\nInstall a skill from GitHub or a local path.\n\n```bash\n# From GitHub (auto-detects agent)\ntaito add owner/repo\ntaito add owner/repo@v1.0.0  # specific tag/branch\n\n# Install a specific skill from a multi-skill repo\ntaito add owner/repo/path/to/skill\ntaito add owner/repo/path/to/skill@v1.0.0\n\n# Install for specific agent (case-insensitive)\ntaito add owner/repo --agent cursor\ntaito add owner/repo --agent ClaudeCode\n\n# From local path\ntaito add ./path/to/skill\n\n# Options\ntaito add owner/repo --config ./answers.toml  # preset config\ntaito add owner/repo --dry-run                # preview without writing\ntaito add owner/repo --output ./custom/path   # custom output directory\ntaito add owner/repo --ref main               # specific git ref\ntaito add owner/repo --global                 # install globally (agent-dependent)\n```\n\n### `taito list`\n\nList all installed skills across all detected agents.\n\n```bash\ntaito list\n```\n\nOutput:\n\n```\nCursor (1 skill):\n  react-localization (customized)\n    Source: aikoa-platform/agent-skills\n    Installed: 1/21/2026\n\n  Directory: /path/to/.cursor/skills\n\nWindsurf (1 skill):\n  code-review\n    Source: vercel-labs/agent-skills\n    Installed: 1/20/2026\n\n  Directory: /path/to/.windsurf/skills\n```\n\n### `taito remove \u003cname\u003e`\n\nRemove an installed skill. If the skill is installed for multiple agents, you'll be prompted to choose which one to remove from.\n\n```bash\ntaito remove react-localization\n```\n\n### `taito build [path]`\n\nFor skill authors: generate skill files from `.taito/` templates using default values. This will allow the skill to be used with other CLIs that don't support customization.\n\n```bash\n# Build in current directory\ntaito build\n\n# Build specific skill\ntaito build ./my-skill/\n```\n\n## Creating Customizable Skills\n\nTo make your skill customizable, add a `.taito/` folder that mirrors your skill structure with EJS templates.\n\n### Directory Structure\n\n```\nmy-skill/\n├── SKILL.md                  # Default output (for standard CLIs)\n├── scripts/\n│   └── helper.sh             # Default script\n└── .taito/                  # Customization folder\n    ├── skill.config.toml     # Variable definitions\n    ├── SKILL.md.ejs          # Template for SKILL.md\n    └── scripts/\n        └── helper.sh.ejs     # Template for script (optional)\n```\n\n### Configuration File\n\nCreate `.taito/skill.config.toml` to define customizable variables:\n\n```toml\n[meta]\nname = \"my-skill\"\nversion = \"1.0.0\"\n\n# String variable\n[variables.PROJECT_NAME]\ntype = \"string\"\nprompt = \"What is your project name?\"\ndefault = \"my-app\"\n\n# Choice variable\n[variables.FRAMEWORK]\ntype = \"choice\"\nprompt = \"Which framework are you using?\"\ndefault = \"react\"\n\n  [[variables.FRAMEWORK.options]]\n  value = \"react\"\n  label = \"React\"\n\n  [[variables.FRAMEWORK.options]]\n  value = \"vue\"\n  label = \"Vue\"\n\n  [[variables.FRAMEWORK.options]]\n  value = \"svelte\"\n  label = \"Svelte\"\n\n# Boolean variable\n[variables.USE_TYPESCRIPT]\ntype = \"boolean\"\nprompt = \"Are you using TypeScript?\"\ndefault = true\n\n# Array variable\n[variables.SUPPORTED_LANGUAGES]\ntype = \"array\"\nprompt = \"Which languages do you support? (comma-separated)\"\ndefault = [\"en\", \"es\"]\n```\n\n### Variable Types\n\n| Type      | Prompt Style         | Value      |\n| --------- | -------------------- | ---------- |\n| `string`  | Text input           | `string`   |\n| `choice`  | Select menu          | `string`   |\n| `boolean` | Yes/No confirm       | `boolean`  |\n| `array`   | Comma-separated text | `string[]` |\n\n### Variable Interpolation\n\nVariables can reference each other using `${VAR_NAME}` syntax. This allows later questions to use answers from earlier questions in their prompts or default values:\n\n```toml\n[meta]\nname = \"my-skill\"\n\n[variables.PACKAGE_MANAGER]\ntype = \"choice\"\nprompt = \"Which package manager do you use?\"\ndefault = \"npm\"\n\n  [[variables.PACKAGE_MANAGER.options]]\n  value = \"npm\"\n  label = \"npm\"\n\n  [[variables.PACKAGE_MANAGER.options]]\n  value = \"yarn\"\n  label = \"yarn\"\n\n  [[variables.PACKAGE_MANAGER.options]]\n  value = \"pnpm\"\n  label = \"pnpm\"\n\n[variables.LINT_COMMAND]\ntype = \"string\"\nprompt = \"What command runs your linter?\"\ndefault = \"${PACKAGE_MANAGER} run lint\"\n\n[variables.TEST_COMMAND]\ntype = \"string\"\nprompt = \"What command runs your tests?\"\ndefault = \"${PACKAGE_MANAGER} run test\"\n```\n\nWhen the user selects `pnpm` as their package manager, the default for `LINT_COMMAND` will be shown as `pnpm run lint`.\n\nInterpolation works in:\n\n- `prompt` - the question shown to the user\n- `default` - the default value for string and choice variables\n- Choice option `label` values\n\n### Template Format\n\nTemplates use [EJS](https://ejs.co/) syntax. Create `.taito/SKILL.md.ejs`:\n\n```markdown\n---\nname: my-skill\ndescription: A skill for \u003c%= PROJECT_NAME %\u003e\n---\n\n# My Skill\n\nThis skill is configured for **\u003c%= FRAMEWORK %\u003e**.\n\n\u003c% if (USE_TYPESCRIPT) { %\u003e\n\n## TypeScript Configuration\n\nMake sure your `tsconfig.json` includes...\n\u003c% } %\u003e\n\n## Supported Languages\n\n\u003c% SUPPORTED_LANGUAGES.forEach(lang =\u003e { %\u003e\n\n- \u003c%= lang %\u003e\n  \u003c% }) %\u003e\n```\n\n### Keeping Defaults in Sync\n\nAfter editing templates, run `taito build` to regenerate the default `SKILL.md`:\n\n```bash\ntaito build ./my-skill/\n```\n\nThis ensures your skill remains compatible with other CLIs that don't support customization.\n\n## Compatibility\n\n### With Standard Skills\n\n`taito` fully supports standard Agent Skills that don't have a `.taito/` folder. It simply copies `SKILL.md`, `scripts/`, `references/`, and `assets/` to the output directory.\n\n### With Other CLIs\n\nCustomizable skills are designed to be backwards compatible:\n\n- **Other CLIs** (like [Vercel's skills CLI](https://skills.sh)) will see only the root-level files (`SKILL.md`, `scripts/`, etc.) and install them normally. The `.taito/` folder is (hopefully) ignored as a hidden directory.\n\n- **taito** checks for `.taito/skill.config.toml`. If present, it uses the templates for customization. If not, it behaves like a standard skill installer.\n\nThis means you can publish a single skill that works with any CLI—users with `taito` get customization, while users with other CLIs get sensible defaults.\n\n## Preset Configuration\n\nFor CI/CD or team-wide configurations, create a TOML file with preset values:\n\n```toml\n# team-config.toml\nPROJECT_NAME = \"acme-app\"\nFRAMEWORK = \"react\"\nUSE_TYPESCRIPT = true\nSUPPORTED_LANGUAGES = [\"en\", \"es\", \"fr\", \"de\"]\n```\n\nThen install non-interactively:\n\n```bash\ntaito add owner/repo --config ./team-config.toml\n```\n\n## Multi-Agent Detection\n\n`taito` automatically detects which AI coding assistant is being used by checking for marker directories:\n\n```bash\n# Single agent detected - installs automatically\n$ taito add owner/repo\n✓ Detected agent: Cursor\n✓ Installing to .cursor/skills/...\n\n# Multiple agents detected - prompts for choice\n$ taito add owner/repo\n✓ Multiple agents detected: Cursor, Windsurf\n? Which agent do you want to install the skill for?\n  \u003e Cursor\n    Windsurf\n\n# Force specific agent\n$ taito add owner/repo --agent windsurf\n✓ Installing to .windsurf/skills/...\n```\n\nThe detection order prioritizes the most commonly used agents first. If you're using multiple agents in the same project and want skills installed for all of them, run the command multiple times with different `--agent` flags.\n\n## Private Repositories\n\nFor private GitHub repositories, set the `GITHUB_TOKEN` environment variable:\n\n```bash\nexport GITHUB_TOKEN=ghp_xxxxxxxxxxxx\ntaito add private-org/private-skill\n```\n\n## Output Location\n\nBy default, skills are installed to the appropriate directory for your detected agent:\n\n- Cursor: `.cursor/skills/\u003cskill-name\u003e/`\n- Windsurf: `.windsurf/skills/\u003cskill-name\u003e/`\n- Claude Code: `.claude/skills/\u003cskill-name\u003e/`\n- etc.\n\nThe workspace root is detected by looking for:\n\n1. Agent-specific directories (`.cursor`, `.windsurf`, etc.)\n2. `.git/` directory\n3. `package.json`\n4. Current working directory (fallback)\n\n### Clawdbot Workspace Discovery\n\nClawdbot uses a unique workspace model. Unlike other agents that store skills in a hidden directory (e.g., `.cursor/skills/`), Clawdbot stores skills in `\u003cworkspace\u003e/skills/`. When installing for Clawdbot, `taito` follows the official ClawdHub workspace discovery chain:\n\n1. `CLAWDHUB_WORKDIR` environment variable (if set)\n2. Current directory (if it contains `.clawdhub/` marker)\n3. Clawdbot's configured default workspace from `~/.clawdbot/clawdbot.json`:\n   - `agents.defaults.workspace` (or legacy `agent.workspace`)\n   - Agent marked `default: true`\n   - Agent with id `main`\n4. Current directory (fallback)\n\nThis ensures skills are installed to the same location that Clawdbot's `clawdhub` CLI would use.\n\n### Global Installation\n\nSome agents support global installation with the `--global` flag:\n\n```bash\ntaito add owner/repo --global\n```\n\nThis installs to the agent's global directory (typically in your home directory) instead of the project-local directory. Not all agents support global installation.\n\n### Custom Output\n\nUse `--output` to specify a custom location (bypasses agent detection):\n\n```bash\ntaito add owner/repo --output ~/.my-skills/\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanieldunderfelt%2Ftaito-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanieldunderfelt%2Ftaito-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanieldunderfelt%2Ftaito-cli/lists"}