{"_id":"@content-island/ai-skills","_rev":"3-b065396bffcd3ab6918e7775a8297c14","name":"@content-island/ai-skills","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@content-island/ai-skills","version":"0.1.0","keywords":["claude-code","ai-skills","content-island","skills"],"author":{"name":"Lemoncode"},"license":"MIT","_id":"@content-island/ai-skills@0.1.0","maintainers":[{"name":"content-island","email":"info@lemoncode.net"}],"homepage":"https://github.com/content-island/content-island-ai-skill#readme","bugs":{"url":"https://github.com/content-island/content-island-ai-skill/issues"},"bin":{"content-island-skills":"dist/index.mjs"},"dist":{"shasum":"3109cb233ab78dcffadbc871ad5e96905e515ff9","tarball":"https://registry.npmjs.org/@content-island/ai-skills/-/ai-skills-0.1.0.tgz","fileCount":7,"integrity":"sha512-efEHI5AkU/oi84/FD/nyMUTmXr3OATw1AwJbr+wF1IU4tN2Tj5amM0IaDTKPTLv3a+SeOXgcWGKGA3d3edCnsw==","signatures":[{"sig":"MEQCIDO22t5gGxRevVN3YKW+ZlsvDBRvNUYYYZQnU1HtugSFAiBuPrHfsjV1KICBy9BQvmuatDpLy9aPfCArM669h66y1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@content-island%2fai-skills@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":33046},"type":"module","engines":{"node":">=24"},"gitHead":"55dee9e5ef2f27c9c3cb2882edc1ec3104fa64a3","private":false,"scripts":{"test":"vitest -c ./config/test/config.ts","build":"tsdown","changeset":"changeset","type-check":"tsc --noEmit","local:publish":"npm run build && node local-npm-registry/publish.js npm publish","publish-packages":"changeset publish","local:publish:release":"npm run start:local-npm-registry && changeset version && node local-npm-registry/publish.js changeset publish","stop:local-npm-registry":"cd ./local-npm-registry && npm stop","start:local-npm-registry":"npm run build && cd ./local-npm-registry && npm start"},"_npmUser":{"name":"content-island","email":"info@lemoncode.net"},"repository":{"url":"git+https://github.com/content-island/content-island-ai-skill.git","type":"git"},"_npmVersion":"11.13.0","description":"Installable Claude Code skills for Content Island projects","directories":{},"_nodeVersion":"24.16.0","dependencies":{"cac":"6.7.14","@clack/prompts":"1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"0.21.9","vitest":"3.2.6","typescript":"5.9.3","@types/node":"24.13.1","@changesets/cli":"2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-skills_0.1.0_1781507846372_0.268761969793347","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@content-island/ai-skills","version":"0.2.0","keywords":["claude-code","ai-skills","content-island","skills"],"author":{"name":"Lemoncode"},"license":"MIT","_id":"@content-island/ai-skills@0.2.0","maintainers":[{"name":"content-island","email":"info@lemoncode.net"}],"homepage":"https://github.com/content-island/content-island-ai-skill#readme","bugs":{"url":"https://github.com/content-island/content-island-ai-skill/issues"},"bin":{"content-island-skills":"dist/index.mjs"},"dist":{"shasum":"d9882dfd9fa2dd078053022e4d69c94949fcd61f","tarball":"https://registry.npmjs.org/@content-island/ai-skills/-/ai-skills-0.2.0.tgz","fileCount":7,"integrity":"sha512-RJSSRSC7304vqiJMeL2bUbmqgd0nWijEmNepmspNIshmSepqMy0XrG6V9P3049EYqlJUQcaxdKfiTSAuum6G7Q==","signatures":[{"sig":"MEUCIBPvEuyg7/PBCKVkAn6n1RtaiUZms/gHS9UmFZBQwhCyAiEAuE1x4QhUET7nBWBcxF8pyogu+HU0TGOmo3TpBt48h/Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@content-island%2fai-skills@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":35277},"type":"module","engines":{"node":">=24"},"gitHead":"ca7f0a3f283fa1e9f684fd4f3494dd77d8710d29","private":false,"scripts":{"test":"vitest -c ./config/test/config.ts","build":"tsdown","changeset":"changeset","type-check":"tsc --noEmit","local:publish":"npm run build && node local-npm-registry/publish.js npm publish","publish-packages":"changeset publish","local:publish:release":"npm run start:local-npm-registry && changeset version && node local-npm-registry/publish.js changeset publish","stop:local-npm-registry":"cd ./local-npm-registry && npm stop","start:local-npm-registry":"npm run build && cd ./local-npm-registry && npm start"},"_npmUser":{"name":"content-island","email":"info@lemoncode.net"},"repository":{"url":"git+https://github.com/content-island/content-island-ai-skill.git","type":"git"},"_npmVersion":"11.16.0","description":"Installable Claude Code skills for Content Island projects","directories":{},"_nodeVersion":"24.18.0","dependencies":{"cac":"6.7.14","@clack/prompts":"1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"0.21.9","vitest":"3.2.6","typescript":"5.9.3","@types/node":"24.13.1","@changesets/cli":"2.31.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-skills_0.2.0_1784276117733_0.21298008811471614","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@content-island/ai-skills","version":"1.0.0","description":"Installable Claude Code skills for Content Island projects","private":false,"author":{"name":"Lemoncode"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/content-island/content-island-ai-skill.git"},"homepage":"https://github.com/content-island/content-island-ai-skill#readme","bugs":{"url":"https://github.com/content-island/content-island-ai-skill/issues"},"bin":{"content-island-skills":"dist/index.mjs"},"type":"module","engines":{"node":">=24"},"scripts":{"build":"tsdown","type-check":"tsc --noEmit","test":"vitest -c ./config/test/config.ts","changeset":"changeset","publish-packages":"changeset publish","start:local-npm-registry":"npm run build && cd ./local-npm-registry && npm start","stop:local-npm-registry":"cd ./local-npm-registry && npm stop","local:publish":"npm run build && node local-npm-registry/publish.js npm publish","local:publish:release":"npm run start:local-npm-registry && changeset version && node local-npm-registry/publish.js changeset publish"},"keywords":["claude-code","ai-skills","content-island","skills"],"dependencies":{"@clack/prompts":"1.2.0","cac":"6.7.14"},"devDependencies":{"@changesets/cli":"2.31.0","@types/node":"24.13.1","tsdown":"0.21.9","typescript":"5.9.3","vitest":"3.2.6"},"publishConfig":{"access":"public"},"gitHead":"f74dd4c8b4102eb40b704527a8e63a88aca9b538","_id":"@content-island/ai-skills@1.0.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-nSv4VUf5L5MIKUtcZJ0I59lkmoG9yRUJUs+wQ/gr2quwp9TB8yneGsUznjNV3J13ihXaiso92OaA3hazY+N7zg==","shasum":"e74613521fa0a1977bcb9bcbfd222a28feab3364","tarball":"https://registry.npmjs.org/@content-island/ai-skills/-/ai-skills-1.0.0.tgz","fileCount":7,"unpackedSize":49131,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@content-island%2fai-skills@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDztMVywVyceygnZsaV6Nkw5lR9o32I6z+vyB8nUiUaIQIgJe9oVPMsqSp3vEKnSXmA7wftsv6NP0iWVG2YipskyM8="}]},"_npmUser":{"name":"content-island","email":"info@lemoncode.net"},"directories":{},"maintainers":[{"name":"content-island","email":"info@lemoncode.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-skills_1.0.0_1784280827877_0.31479041874548375"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-15T07:17:26.177Z","modified":"2026-07-17T09:33:48.367Z","0.1.0":"2026-06-15T07:17:26.510Z","0.2.0":"2026-07-17T08:15:17.881Z","1.0.0":"2026-07-17T09:33:48.056Z"},"bugs":{"url":"https://github.com/content-island/content-island-ai-skill/issues"},"author":{"name":"Lemoncode"},"license":"MIT","homepage":"https://github.com/content-island/content-island-ai-skill#readme","keywords":["claude-code","ai-skills","content-island","skills"],"repository":{"type":"git","url":"git+https://github.com/content-island/content-island-ai-skill.git"},"description":"Installable Claude Code skills for Content Island projects","maintainers":[{"name":"content-island","email":"info@lemoncode.net"}],"readme":"# Content Island AI Skills\n\nA collection of reusable AI skills for Claude Code, GitHub Copilot, and other LLM-based coding tools to work with Content Island projects.\n\n---\n\n## What is this?\n\nThis repository contains **portable AI skill definitions** that encode Content Island principles and best practices as AI-readable behavior contracts.\n\nInstead of relying on ad-hoc prompts, these skills provide a **consistent, reusable way** to guide LLMs when working on content-driven projects.\n\nThink of them as:\n\n- shared context for AI assistants\n- behavioral specs\n- lightweight \"system prompts\" you can reuse across tools\n\n---\n\n## Installation via npx\n\nInstall any skill into your project's standard Claude Code folder (`.claude/skills/`) with a single command — no `postinstall`, no lifecycle scripts, you decide when code runs.\n\n> **You don't install this package.** It's a one-shot installer, so just run it\n> with `npx` — it's fetched, run once, and leaves nothing in your project.\n> The command is the package name, `npx @content-island/ai-skills`. (Internally\n> the binary is `content-island-skills`; an npm `bin` can't contain a scope, but\n> `npx @content-island/ai-skills` resolves to it automatically.)\n\n### Interactive mode (recommended)\n\nRun with no arguments to open an interactive selector. **All skills come pre-selected** — just unselect the ones you don't want and press enter:\n\n```bash\nnpx @content-island/ai-skills\n```\n\n- Navigate with the arrow keys, toggle with `space`, confirm with `enter`.\n- Skills already present in `.claude/skills/` are labelled `(installed)`; if you keep them selected you'll be asked to confirm before overwriting.\n- Press `Ctrl-C` to cancel without installing anything.\n\n### Command mode (CI / scripting)\n\n```bash\n# List available skills\nnpx @content-island/ai-skills list\n\n# Install one skill (short alias or full folder name both work)\nnpx @content-island/ai-skills install astro-pods\nnpx @content-island/ai-skills install content-island-client-api\n\n# Install every skill\nnpx @content-island/ai-skills install all\n\n# Overwrite an already-installed skill\nnpx @content-island/ai-skills install astro-pods --force\n```\n\nResult:\n\n```text\nmy-project/\n└── .claude/\n    └── skills/\n        └── content-island-astro-pods-architecture/\n            └── SKILL.md\n```\n\n---\n\n## Development\n\nThis package is written in TypeScript and built with tsdown. Functions are\nwritten as arrow functions and tests follow the AAA (Arrange / Act / Assert)\nstructure.\n\n### Project layout\n\n```text\nsrc/\n  index.ts                       # cac CLI: default -> interactive, list, install\n  core/helpers/*.helper.ts       # discover, install, frontmatter, paths\n  core/helpers/*.helper.spec.ts  # vitest tests (AAA)\n  commands/                      # list, install, interactive (@clack/prompts)\nconfig/test/          # vitest config (config.ts)\nskills/               # one folder per skill, each with a SKILL.md\ntsdown.config.ts      # build config (tsdown) -> dist/index.mjs\nlocal-npm-registry/   # Verdaccio (Docker) for local publish testing\n```\n\n### npm scripts\n\n| Script | What it does |\n| --- | --- |\n| `npm install` | Install dependencies |\n| `npm run type-check` | `tsc --noEmit` |\n| `npm run build` | Bundle `src/` → `dist/index.mjs` (tsdown) |\n| `npm run test` | Run vitest (config in `config/test/config.ts`) |\n| `npm run changeset` | Create a changeset describing your change |\n| `npm run start:local-npm-registry` | Build + start Verdaccio at `localhost:4873` |\n| `npm run stop:local-npm-registry` | Stop Verdaccio |\n| `npm run local:publish` | Build + publish to Verdaccio **without bumping the version** |\n| `npm run local:publish:release` | Full versioned rehearsal: consumes changesets, bumps version, publishes to Verdaccio |\n\n### Adding a new skill\n\nCreate `skills/content-island-<name>/SKILL.md` with `name:` and `description:`\nfrontmatter. That's it — the CLI discovers skills automatically (no code\nchanges) and the `skills` entry in `files` ships it on publish.\n\n---\n\n## Running locally (all options)\n\nYou don't need to publish to try the CLI. Pick whichever fits:\n\n### 1. Run the built file directly (fastest)\n\n```bash\nnpm run build\n\n# Interactive selector (all skills pre-selected)\nnode dist/index.mjs\n\n# Commands\nnode dist/index.mjs list\nnode dist/index.mjs install astro-pods\nnode dist/index.mjs install all --force\n```\n\nSkills are installed into `.claude/skills/` of the **current working\ndirectory**, so `cd` into a throwaway folder to test the result.\n\n### 2. `npm link` (test as a real dependency, live updates)\n\n```bash\n# In this repo\nnpm run build\nnpm link\n\n# In a test project\nnpm link @content-island/ai-skills\nnpx @content-island/ai-skills          # interactive\nnpx @content-island/ai-skills list\n\n# Cleanup\nnpm unlink @content-island/ai-skills      # in the test project\nnpm rm --global @content-island/ai-skills # in this repo\n```\n\nRe-run `npm run build` after code changes (the link points at `dist/`).\n\n### 3. Tarball (closest to the real `npm install`)\n\n```bash\nnpm run build\nnpm pack                       # creates content-island-ai-skills-<v>.tgz\n\n# In a test project\nnpm install /absolute/path/to/content-island-ai-skills-<v>.tgz\nnpx @content-island/ai-skills\n```\n\n### 4. Verdaccio local registry (full publish simulation, requires Docker)\n\nMirrors the Content Island local-registry flow end to end.\n\n**In this repo** — start Verdaccio and publish:\n\n```bash\nnpm run start:local-npm-registry      # build + Verdaccio at localhost:4873\n\n# Publish WITHOUT bumping the version (the usual case for local testing):\nnpm run local:publish\n\n# …or the full versioned rehearsal (consumes changesets):\nnpm run local:publish:release\n```\n\nNow the package is available at `http://localhost:4873`.\n\n**In your test project** — add an `.npmrc` pointing at the local registry, then\ninstall normally (no `--registry` flag needed):\n\n```ini\n# .npmrc\nregistry=http://localhost:4873\n//localhost:4873/:_authToken=\"local-token\"\n@content-island:registry=http://localhost:4873\n```\n\n```bash\nnpm install @content-island/ai-skills\nnpx @content-island/ai-skills             # interactive selector\nnpx @content-island/ai-skills install all\n```\n\n> Without that `.npmrc` (and without `--registry`), `npm install` goes to the\n> public registry and fails with `404` until the package is published there.\n\nStop the registry when done (and remove the test project's `.npmrc` so it goes\nback to the public registry):\n\n```bash\nnpm run stop:local-npm-registry\n```\n\n> Publishing to the **public npm registry** runs automatically from the\n> `Release` GitHub Action when changesets are merged to `main`.\n\n---\n\n## Available Skills\n\n### 1. Client API Skill (`content-island-client-api`)\n\nHelps developers interact with the **Content Island Client API** using only the official documentation.\n\n**Use this skill when:**\n\n- Working with `@content-island/api-client` library\n- Querying content via `getContentList`, `getContent`, `getRawContentList`, etc.\n- Mapping raw content to models\n- Handling access tokens and preview mode\n\n**Key features:**\n\n- Strict adherence to official documentation\n- Anti-hallucination safeguards\n- TypeScript-first examples\n- Security best practices for tokens\n\n### 2. Astro PODS Architecture Skill (`content-island-astro-pods-architecture`)\n\nDefines a clear **PODS (feature/islands) architecture** for Astro projects.\n\n**Use this skill when:**\n\n- Structuring an Astro project with Content Island\n- Creating or extending PODS (feature islands)\n- Organizing UI, API models, business logic, and mappers\n- Ensuring consistent project architecture\n\n**Key features:**\n\n- Clear folder structure conventions\n- Isolation rules between pods\n- Layer responsibilities (pages, layouts, pods, common)\n- Implementation checklists\n\n### 3. TanStack Start PODS Architecture Skill (`content-island-tanstack-start-pods-architecture`)\n\nDefines a clear **PODS (feature/islands) architecture** for TanStack Start projects.\n\n**Use this skill when:**\n\n- Structuring a TanStack Start project with Content Island\n- Creating or extending PODS (feature islands)\n- Ensuring consistent project architecture\n\n---\n\n## Why do these skills exist?\n\nWhen using LLM-based coding tools, decisions tend to drift over time:\n\n- API usage becomes inconsistent\n- Architectural patterns are forgotten\n- Constraints must be re-explained repeatedly\n\nThese skills address that by:\n\n- Making expectations explicit\n- Keeping rules close to the project\n- Reducing prompt repetition\n- Improving consistency across sessions and tools\n\n---\n\n## How to use\n\nThe recommended way is the [npx installer](#installation-via-npx) above, which copies the skill into `.claude/skills/` so Claude Code picks it up automatically.\n\nAlternatively, you can install manually:\n\n1. Copy the relevant `SKILL.md` into `.claude/skills/<skill-name>/` in your project\n2. Make it available to your LLM tool as part of the project context\n3. Instruct the model to follow the rules defined in the skill\n\nExample instructions:\n\n> \"Follow the Content Island Client API rules defined in `content-island-client-api`.\"\n\n> \"Use the PODS architecture defined in `content-island-astro-pods-architecture` for this Astro project.\"\n\n---\n\n## Design principles\n\nThese skills are intentionally:\n\n- **Tool-agnostic** — work with any LLM-based coding tool\n- **Human-readable** — plain Markdown, easy to review\n- **Explicit** — no hidden assumptions\n- **Portable** — copy and use anywhere\n\nThey are not:\n\n- a prompt collection\n- a framework\n- a plugin\n\n---\n\n## Status\n\nThis is an **experimental convention**, not a formal standard.\n\nThe goal is to explore how lightweight, markdown-based skill definitions can improve consistency when working with LLMs across tools.\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md"}