feat(skill): add @tsops/skill — Claude Skill for tsops#62
Open
Pom4H wants to merge 2 commits into
Open
Conversation
Ships the canonical Skill content at skills/tsops/ and a thin npm
package (@tsops/skill) that installs it into ~/.claude/skills/tsops or
./.claude/skills/tsops. After install, Claude Code, the Agent SDK, and
any other tool implementing the Agent Skills standard load the Skill
automatically when relevant.
Why a Skill, not just docs: the docs explain what tsops is. The Skill
tells an agent how to operate it without violating the load-bearing
rules — no internal URLs in env vars, always run `tsops plan` before
deploy, always `tsc --noEmit` after a rename, never `--no-verify` past
secret validation. Without the Skill, an LLM agent reaches for
BACKEND_URL=http://api:3000 because that pattern is everywhere else
on the public internet. With it, it reaches for config.url('api', 'service').
Distribution model (mirrors workflows-sdk.dev structure):
- canonical source on GitHub at skills/tsops/
- npm package @tsops/skill that installs the Skill via `npx @tsops/skill install`
- docs page at docs/guide/skill.md
Skill structure:
skills/tsops/
├── SKILL.md entry point — frontmatter + hard rules
├── reference/
│ ├── commands.md CLI flags
│ ├── runtime-helpers.md config.url / config.env / config.dns
│ ├── secrets.md secret validation, cluster fallback
│ └── preview-overlays.md overlay namespace lifecycle
└── examples/
├── add-app.md recipe
├── rename-app.md recipe — compiler-driven rename
└── add-secret.md recipe
Package structure (packages/skill/):
- bin/install.mjs — `tsops-skill install [--user|--project] [--force]`,
plus uninstall and where subcommands
- scripts/sync-skill.mjs — build step that copies skills/tsops/ into
packages/skill/skill/ for the npm tarball
(npm doesn't preserve symlinks reliably)
- README.md — install + verify + uninstall instructions
This PR is strictly additive — no existing files are modified, so no
conflict with the in-flight docs refresh in PR #51.
Follow-ups (separate small PRs after both merge):
- surface /guide/skill in the docs sidebar
- add a "Use with Claude" link from the main README
- submit to anthropics/skills community registry if/when accepted
CI failed on packages/skill because biome's organize-imports moved imports above the file-level docstring, and one-liner try/catch and if blocks exceeded the formatter's preferred line layout. Replace the JSDoc block with line comments so imports come first, then split the one-liners. Also pick up the @tsops/skill workspace entry that was missing from the lockfile, which would have made `pnpm install --frozen-lockfile` drift once the package landed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ships the canonical Skill content at skills/tsops/ and a thin npm
package (@tsops/skill) that installs it into ~/.claude/skills/tsops or
./.claude/skills/tsops. After install, Claude Code, the Agent SDK, and
any other tool implementing the Agent Skills standard load the Skill
automatically when relevant.
Why a Skill, not just docs: the docs explain what tsops is. The Skill
tells an agent how to operate it without violating the load-bearing
rules — no internal URLs in env vars, always run
tsops planbeforedeploy, always
tsc --noEmitafter a rename, never--no-verifypastsecret validation. Without the Skill, an LLM agent reaches for
BACKEND_URL=http://api:3000 because that pattern is everywhere else
on the public internet. With it, it reaches for config.url('api', 'service').
Distribution model (mirrors workflows-sdk.dev structure):
npx @tsops/skill installSkill structure:
skills/tsops/
├── SKILL.md entry point — frontmatter + hard rules
├── reference/
│ ├── commands.md CLI flags
│ ├── runtime-helpers.md config.url / config.env / config.dns
│ ├── secrets.md secret validation, cluster fallback
│ └── preview-overlays.md overlay namespace lifecycle
└── examples/
├── add-app.md recipe
├── rename-app.md recipe — compiler-driven rename
└── add-secret.md recipe
Package structure (packages/skill/):
tsops-skill install [--user|--project] [--force],plus uninstall and where subcommands
packages/skill/skill/ for the npm tarball
(npm doesn't preserve symlinks reliably)
This PR is strictly additive — no existing files are modified, so no
conflict with the in-flight docs refresh in PR #51.
Follow-ups (separate small PRs after both merge):