skills/skill-author/SKILL.md
Creates new SKILL.md files or refactors existing skills to comply with the ASTRA skill best practices guide (docs/development/skill-best-practices.md). Use when user mentions "new skill", "create skill", "SKILL.md", "skill authoring", "스킬 작성", "스킬 만들기", or when editing any file matching skills/**/SKILL.md.
npx skillsauth add astra-technology-company-limited/astra-methodology skill-authorInstall 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.
Writes a new SKILL.md or refactors an existing skill to comply with the ASTRA best practices. The SSoT is docs/development/skill-best-practices.md (hereafter BP); this skill partially references BP's 13 sections step-by-step — never load the whole file (BP §1 "Concise is key", §4 progressive disclosure).
Confirm the mode via user input or AskUserQuestion.
| Mode | Trigger | Entry point |
|------|---------|-------------|
| new | "write new skill", empty directory, /skill-author <name> | Step 1 |
| refactor | existing SKILL.md argument, "improve this skill" | Step 5 |
| lint-only | "validation only", "checklist only" | Delegate to /skill-lint command (this skill exits) |
Ask the four questions at once with AskUserQuestion to reduce user load:
disable-model-invocation: true)Apply BP §12 ASTRA conventions based on the answers:
description: > blockdescription: "..." single linepaths glob as a supplementary trigger (BP §12.1)Apply the BP §2 field table and the §3 description 7 principles. If needed, Read only BP §2-3:
sed -n '25,63p' docs/development/skill-best-practices.md
Immediately self-check the description against these patterns:
| Violation | Pattern | Action |
|-----------|---------|--------|
| First-person self-introduction | First-person phrases ("I can", "I will", "you can use") | Rewrite in third person as "Does X. Use when..." |
| Vague verbs | "helps with", "does stuff" | Replace with concrete verbs (validates, generates, extracts...) |
| Missing trigger keywords | "Use when" absent | Add "Use when [situation 1], [situation 2], or when user mentions [keyword]" |
| Over 1,024 chars | wc -c result | Compress the core use case into the first sentence |
Match BP §6 freedom levels and §7 workflow patterns:
| Freedom | Format | Suitable domain | |---------|--------|-----------------| | High | Text guide | Code review, design | | Medium | Template + parameters | Document generation | | Low | Fixed script | DB migration, CI |
Structure complex multi-step work as a checklist + validation loop:
- [ ] Step N: action
- [ ] Step N+1: validation (on failure, return to Step N)
Recommend using AskUserQuestion at these moments:
Too many questions increase user burden — bundle them together or proceed with defaults and confirm after the fact.
If the SKILL.md body being written/edited contains any of the following 6 patterns, block immediately:
references/ link from inside a references fileThe exact grep commands for each pattern are separated into references/anti-pattern-grep.md — inlining them in the body would cause grep meta-characters to false-positive against the Windows-path detection regex. See BP §8 for the full list of 10 anti-patterns (if needed, sed -n '132,143p' docs/development/skill-best-practices.md).
/skill-lint <path> to receive the 13-check resultdisable-model-invocationAskUserQuestion; leave P2 in the report/skill-lint to verify regressionIf wc -l <SKILL.md> exceeds 500 lines, recommend a split to the user:
skills/<name>/
├── SKILL.md ← table of contents / entry point (≤500 lines)
├── references/ ← detailed materials (one level deep)
│ ├── domain-a.md
│ └── domain-b.md
├── scripts/ ← executable scripts
└── assets/ ← templates / resources
Split rules (BP §4):
reference/finance.md ↔ reference/sales.md)Per BP §9, after the skill is complete, write at least 3 evaluation scenarios in references/evals.md in the same directory:
# {{skill-name}} Evaluations
## Scenario 1: <representative use case>
- Input: <user utterance or argument>
- Expected: <which skill should be invoked and what steps should run>
- Pass criteria: <verifiable result>
## Scenario 2: <edge case>
...
## Scenario 3: <misuse / negative>
...
Establish the baseline by attempting the same task without the skill.
When authoring/editing is finished, pass all 13 items of BP §13 — this skill delegates to /skill-lint:
/skill-lint skills/<name>/SKILL.md
Done if the report is 13/13 PASS. If any FAIL/WARN remain, return to Step 5 (refactor).
A new skill usually also needs one line added to the Skill Catalog table in CLAUDE.md. This skill does not update it automatically — emit a one-line notice so the user decides the table format and placement (section):
Add a
/<skill-name>row to the Skill Catalog table inCLAUDE.md. Format:| /<skill-name> | <one-line English description> |
Adding a new skill is a minor bump (x.+1.0). Only when the user signals an intent to push to main, emit:
Bump the
versionfield in.claude-plugin/plugin.jsonand.claude-plugin/marketplace.jsonby +1 minor. (Check current:cat .claude-plugin/plugin.json | jq .version)
This skill never bumps the version on its own.
Reference location guide (use when partially referencing BP):
| Information needed | BP section | Line range (approx.) | |--------------------|------------|----------------------| | Frontmatter fields | §2 | 25-38 | | Description 7 principles | §3 | 41-63 | | Progressive Disclosure | §4 | 66-84 | | 10 anti-patterns | §8 | 132-144 | | ASTRA conventions | §12 | 182-225 | | 13-item checklist | §13 | 229-243 |
tools
Runs UAT (User Acceptance Testing) cases in TRUE PARALLEL using Playwright Test runner with isolated browser contexts per worker (separate cookies, localStorage, sessionStorage). Solves the two main limits of /user-test: (1) sequential single-page execution that does not scale beyond a few cases, and (2) one stuck case blocking the rest of the run. Reuses 100% of the /user-test UAT case Markdown+YAML format under docs/tests/uat-cases/, runs them via `npx playwright test --workers=N`, and emits the same report layout (index.html + issues.md + session.json + screenshots/) under docs/tests/uat-reports/. Use when the user asks to "run UAT in parallel", "speed up UAT", "test multi-user", "song song", "uat parallel", or runs /uat-parallel. Distinct from /user-test (sequential Chrome MCP, supports interactive mode), /test-run (developer integration tests), /test-scenario (scenario authoring).
tools
Performs end-user UAT (User Acceptance Testing) by driving a real browser through Chrome MCP, self-verifying each step with hard assertions (DOM / Network / URL / Console), auto-assigning severity on failure, and emitting an HTML report plus issues.md into a timestamped session folder. Supports two modes: interactive (URL + Vietnamese natural-language flow description) and --auto (batch-run pre-authored test cases under docs/tests/uat-cases/). Use when the user asks for "UAT", "user acceptance test", "kiểm thử người dùng", "regression test", or runs /user-test, /uat. Distinct from /test-run (developer-authored technical integration testing) and /test-scenario (scenario authoring from blueprints).
tools
Authors and validates LLM tool descriptions and input schemas (Anthropic Tool Use, MCP servers, LangChain @tool, Pydantic, Zod). Use when the user mentions "tool description", "function calling", "MCP tool", "Pydantic schema", "Zod schema", "@tool decorator", "input_schema", "tool spec", "툴 정의", "함수 호출 스키마", or when editing files that define LLM tool surfaces. Enforces the six required attributes (one-line summary, anti-pattern, synonyms, parameter examples, enum constraints, return shape) and blocks the seven known failure modes — wrong-tool selection, skipped tool, malformed arguments, retry loops, user-intent bypass, wrong side-effect, and un-auditable traces. For authoring ASTRA SKILL.md files use /skill-author instead — this skill is for *runtime* LLM tool surfaces, not for skill files themselves.
tools
Audits existing UI components/pages/CSS against docs/design-system/DESIGN.md and applies fixes to restore design consistency. Uses design-token-validator to detect hardcoded color/font/spacing violations, and invokes designer-persona to report a senior-perspective score (0-10) and anti-AI aesthetic violations (generic shadcn look, purple gradient cliché). Fixes are applied automatically (--apply) or proposed as a PR (--pr); after changes, design-token-validator is re-run and must PASS before completion. Input: target directory (e.g., src/components/Button), single file, or git diff. Output: audit report (docs/design-system/audit-{date}.md) + fix proposals + application results.