plugins/src/base/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.tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.
tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.
tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.
tools
Configure the official SonarQube plugin + MCP as Lisa's single Sonar substrate across every supported coding agent. Installs/updates the SonarQube CLI, authenticates (browser login on a dev machine, or SONARQUBE_CLI_TOKEN headless), selects the Test Manager target, runs `sonar integrate <agent>` for each supported agent (Claude, Codex, Cursor, Copilot, Antigravity) and wires the MCP for OpenCode, then writes only non-secret policy to .lisa.config.json. Separate from the CI SonarCloud scan gate, which is unchanged.