plugins/lisa-cursor/skills/lisa-parity-skill-creator/SKILL.md
Author a new Lisa skill end-to-end — scaffold the SKILL.md frontmatter (name/description/allowed-tools), write the pass-through command, follow hyphen naming, place files under plugins/src/base, and rebuild plugins. Lisa-native reimplementation of the upstream skill-creator plugin. NO drift pin: upstream publishes no semver, so it is not drift-trackable.
npx skillsauth add codyswanngt/lisa lisa-parity-skill-creatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Author a new, working Lisa skill (and its pass-through command) from a one-line
description. This is the Lisa-native equivalent of the upstream
skill-creator@claude-plugins-official plugin, reimplemented from scratch
against Lisa's conventions so the same capability is available to the Codex,
agy, and Copilot runtimes (Cursor reads .claude-plugin/ natively).
This skill intentionally carries no synced-from pin. The upstream
skill-creator plugin publishes no semver (its cache version resolves to
unknown), so a @unknown pin would be unparseable and meaningless to
scripts/plugin-parity-drift.mjs. Drift is tracked manually — re-review the
upstream plugin by hand whenever the curated plugin set is refreshed. Do not
add a synced-from line to skills generated by this skill unless they
reimplement a semver-versioned upstream plugin.
analyze-plugin / implement-plugin-parity).If the knowledge is narrow or one-off, prefer a rule in .claude/rules/ instead
— skills are for broad, repeatable capabilities. When unsure whether content
warrants a skill, run it past the skill-evaluator agent first — it is the
six-rung ladder router, a skill is only one rung, and it may recommend a
cheaper or stronger destination instead.
Lisa skills are build output for downstream projects. The source of truth is
plugins/src/, never the generated plugins/lisa* artifacts:
| Source directory | Builds artifact | Use for |
| --- | --- | --- |
| plugins/src/base/ | plugins/lisa | Skills that ship to every stack |
| plugins/src/<stack>/ | plugins/lisa-<stack> | Stack-specific (typescript, expo, nestjs, cdk, harper-fabric, rails) |
Lisa-repo-only skills (parity tooling, wiki ingestion, lisa-* meta-skills) live
at the root .claude/skills/ and .claude/commands/, NOT under
plugins/src — they are not relevant to downstream projects. Decide placement
first:
plugins/src/base/skills/lisa-<name>/SKILL.md.claude/skills/<name>/SKILL.mdlisa- prefix on the directory and frontmatter
name: lisa-implement, lisa-git-commit, lisa-tracker-write. No spaces,
no camelCase, no underscores.name must match exactly.commands/ — Claude Code prefixes plugin commands
with the plugin name, so commands/git/commit.md → /lisa:git:commit and
commands/implement.md → /lisa:implement. (Per-agent variant generators
nest them under commands/lisa/ for harnesses without plugin-name
namespacing; never author that nesting in source.)/lisa:* (colon). Skills surface as /lisa-*
(hyphen). Never share a bare name like implement across both surfaces.Skills support only these frontmatter keys (they do not support
argument-hint or $ARGUMENTS substitution — those belong on the command):
---
name: lisa-my-skill # required — matches the directory name
description: "One or two sentences." # required — when to use + what it does
allowed-tools: ["Read", "Edit", "Write", "Bash"] # optional — least privilege
synced-from: <plugin>@<marketplace>@<version> # ONLY for semver upstream reimplementations
---
name — the hyphen identifier, byte-identical to the directory.description — write it so the model knows when to reach for the skill,
not just what it does. Lead with the trigger. This is the single most
important field for discoverability.allowed-tools — grant the minimum set. A read-only review skill needs no
Write/Edit. Omit the key entirely to inherit the caller's tools.synced-from — add only when the skill reimplements an upstream plugin
that publishes a real semver. Grammar: name@marketplace@version
(e.g. sentry@[email protected]). Omit for upstreams with no
semver (note that in the body instead, as this skill does).Every skill should have a thin command that is the user-facing entry point.
Commands support description, argument-hint, and $ARGUMENTS; they delegate
straight to the skill:
---
description: "Same human-facing summary as the skill, phrased for the picker."
argument-hint: "<what the user should type after the command>"
---
Use the /lisa-my-skill skill to <do the thing>. $ARGUMENTS
The command carries the argument-hint and forwards $ARGUMENTS; the SKILL.md
carries the actual logic. Keep the two descriptions consistent.
plugins/src/base) vs. Lisa-only
(.claude). For base, both a skill and a command directory entry are needed.lisa-<slug>, hyphenated, unique. Check it does not collide:
ls plugins/src/base/skills/ and ls plugins/src/base/commands/.plugins/src/base/skills/lisa-<name>/SKILL.md with the frontmatter above and a
body that follows house style — see plugins/src/base/skills/lisa-quality-review/SKILL.md
for the canonical shape (title, "When to use", numbered checklist/steps,
explicit "Rules"/"Output" sections). Write real, actionable guidance, not
TODOs.plugins/src/base/commands/<name>.md (or a nested
commands/<namespace>/<name>.md for a colon-namespaced command) using the
pass-through template.bun run build:plugins
Then commit both plugins/src/... and the regenerated plugins/lisa*.
The 🧩 Plugins Sync CI check (and bun run check:plugins locally) fails if
artifacts drift from source — never hand-edit plugins/lisa*./lisa-<name> and
the command resolves to /lisa:<name> (or /lisa:<ns>:<name> when nested).# H1 title in Title Case.## When to use section that names the triggers.## Rules (hard constraints) and/or ## Output section.lisa-git-commit").plugins/lisa* directly — edit plugins/src/ and rebuild.argument-hint or $ARGUMENTS.name field, and command filename must match exactly.synced-from only for semver-versioned upstream reimplementations./coding-philosophy in task skills metadata — it auto-loads.development
Prepare a machine — a fresh laptop or a throwaway container — to run coding agents, before any repository exists. Detects which of Lisa's supported agents (Claude Code, Codex, Cursor, OpenCode, Antigravity, Copilot) are already installed, asks which credential manager the machine uses (Bitwarden, 1Password, Doppler, Vault, AWS, or none), and installs only what is missing, each by its vendor's own preferred method. Idempotent, headless by default, and emits a Dockerfile for a spin-up/spin-down environment. Run it on a new machine, in a container, or before cloning anything.
tools
Provision and verify a remote execution environment for a host project — Codex Cloud today, other remote surfaces as they are added. Generates a repository-owned setup script that installs the declared toolchain, materializes secrets through lisa-secrets-access, and runs the project's own hook. Provisions by API where one exists, by driving the vendor console where one does not, and by emitting exact config otherwise — then proves the result with the same read-back regardless of which tier did the work. Use before dispatching any work with executionEnv.
tools
Bring a developer's machine in line with the toolchain the project declares. Reports every tool in remoteEnv.tools that is missing, outdated, or unpinned for this platform, and installs the missing ones into ~/.local/bin from the same pinned, checksummed entries the remote surfaces use — but only when asked. Same manifest, same pins, same installers as lisa-setup-remote-env; what differs is consent and that the pin is a floor rather than an equality. Run it on a fresh checkout, after a manifest change, or when a tool fails at the moment of use.
tools
Route one unit of work to a remote execution surface. Reads the executionEnv parameter (local by default, codex-cloud or claude-web today), verifies the environment is provisioned and bound to this repository, submits a thin skill invocation, records the task identifier to .lisa/remote-dispatch.json, and exits without polling. Routing only — the remote runs the identical skill from the identical repository. Composable and inline: other skills invoke it via the Skill tool rather than users calling it directly.