skill-update
- Repo stars 290
- Author repo communitytools
Skill Update
Generate or refine Claude Code skills following Anthropic best practices.
Hard caps (enforced by scripts/skill_linter.py)
SKILL.md≤ 150 linesreference/*.md≤ 200 lines (reference/scenarios/*.md≤ 400 lines)README.md≤ 100 lines- Every
SKILL.mdhas YAML frontmatter withname+description - No
DO NOT/MUST NOT/NEVERoutside an## Anti-Patternssection - No challenge-specific identifiers (machine names, lab IDs, lab IPs, preserved flags)
- Every Markdown link resolves to an existing file
- Every reference file is linked from at least one other file (no orphans)
Principles
- Brevity first. Every file short, simple, human-readable. Challenge every token.
- Progressive disclosure. SKILL.md navigates;
reference/holds detail;reference/scenarios/holds concrete exploit flows. - Separation of concern. SKILL.md = WHAT + when.
reference/role-*.md= HOW agents behave when spawned. - Single canonical home for any cross-cutting rule (output discipline, credential loading, brute-force, etc.). Other files reference, never restate.
File structure
skills/<skill-name>/
├── SKILL.md # ≤150 lines, YAML + navigation
├── reference/
│ ├── *-principles.md # ≤150 lines (decision tree)
│ ├── INDEX.md
│ ├── *.md # patterns, ≤200 lines
│ └── scenarios/
│ └── <category>/
│ └── *.md # ≤400 lines, self-contained
└── README.md # optional, ≤100 lines
SKILL.md template
---
name: <skill-name>
description: What it does AND when to use. Include trigger phrases.
---
# <Skill Name>
<one-paragraph scope>
## When to use
- <bullet>
## Workflow / Quick start
<≤30 lines>
## References
- [reference/...](reference/...)
## Anti-Patterns
- <when negative framing is genuinely needed, put it here>
When to update an existing skill
Process the techniques and failure modes from completed engagements. Promote a learning to the skill base only if all four hold:
- Generalizable. Reusable pattern, not target-specific lore. No machine names, lab IDs, target IPs, preserved flags, writeup attributions.
- Material improvement. Adds coverage, efficiency, or decision-quality for future engagements.
- Not already captured elsewhere in the skill base. (
scripts/skill_linter.pyflags duplicates.) - Minimal footprint. Prefer extending an existing entry over adding a new file. Keep the base lean and high-signal.
Reframing recipe
Always frame as a reusable pattern: "when encountering X condition, try Y approach" — never "on box-N, Y worked". Use <TARGET_IP>, <DC_FQDN>, <DOMAIN> placeholders in tool examples.
Pre-write check
Before writing, run python3 scripts/skill_linter.py. Reject any change that:
- Re-introduces challenge-specific lore.
- Pushes a
SKILL.mdpast 150 or a reference past its cap. - Duplicates a single-owner rule (brute-force, output discipline, env-reader).
- Adds
DO NOT/MUST NOT/NEVERoutside an Anti-Patterns block.
Output
Concise change report:
- Updated. File + one-line summary of edit.
- Skipped. Notable findings intentionally not added, with brief reasoning.
- No changes. State explicitly when nothing warranted an update.
Reference
- STRUCTURE.md — directory layout requirements.
- FRONTMATTER.md — YAML rules.
- CONTENT.md — writing guidelines.
Anti-Patterns
- Creating CHANGELOG.md / SUMMARY.md / VERIFICATION.md auxiliary files.
- Meta-documentation about the creation process inside the skill itself.
- Verbose inline templates and examples (link to
reference/instead). - Re-introducing duplicate rule prose (brute-force, output-dir, env-reader).
- Files past their cap — split into
reference/immediately.
- Fluxly category
- Engineering
- Author-declared agents
- No explicit declaration found; this is not inferred or tested compatibility
- Static check
- 88 / 100 · heuristic scan, not runtime safety proof
- Author / version / license
- @transilienceai · no license declared
- Fluxly token estimate
- Lean
- Fluxly setup estimate
- Guided setup
- External API key
- No requirement detected
- Detected OS requirements
- Unspecified
- Runtime requirements
- Unspecified
- Detected file/system behavior
-
- Read-only
- Write / modify
- Shell exec
- Detected network behavior
- Local-only
- Install commands
- None (reference only)
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
# Workflow / Quick start
<≤30 lines> SKILL.md ≤ 150 lines reference/.md ≤ 200 lines (reference/scenarios/.md ≤ 400 lines) README.md ≤ 100 lines
Brevity first. Every file short, simple, human-readable. Challenge every token. Progressive disclosure. SKILL.md navigates; reference/ holds detail; reference/scenarios/ holds concrete exploit flows. Separation of concern. SKILL.md = WHAT + when.…
File structure
SKILL.md template
<bullet>
<≤30 lines>
# Skill Update
Generate or refine Claude Code skills following Anthropic best practices.
## Hard caps (enforced by `scripts/skill_linter.py`)
- `SKILL.md` ≤ 150 lines
- `reference/*.md` ≤ 200 lines (`reference/scenarios/*.md` ≤ 400 lines)
- `README.md` ≤ 100 lines
- Every `SKILL.md` has YAML frontmatter with `name` + `description`
- No `DO NOT` / `MUST NOT` / `NEVER` outside an `## Anti-Patterns` section
- No challenge-specific identifiers (machine names, lab IDs, lab IPs, preserved flags)
- Every Markdown link resolves to an existing file
- Every reference file is linked from at least one other file (no orphans)
## Principles
- **Brevity first.** Every file short, simple, human-readable. Challenge every token.
- **Progressive disclosure.** SKILL.md navigates; `reference/` holds detail; `reference/scenarios/` holds concrete exploit flows.
- **Separation of concern.** SKILL.md = WHAT + when. `reference/role-*.md` = HOW agents behave when spawned.
- **Single canonical home** for any cross-cutting rule (output discipline, credential loading, brute-force, etc.). Other files reference, never restate.
## File structure
```
skills/<skill-name>/
├── SKILL.md # ≤150 lines, YAML + navigation
├── reference/
│ ├── *-principles.md # ≤150 lines (decision tree)
│ ├── INDEX.md
│ ├── *.md # patterns, ≤200 lines
│ └── scenarios/
│ └── <category>/
│ └── *.md # ≤400 lines, self-contained
└── README.md # optional, ≤100 lines
```
## SKILL.md template
```yaml
---
name: <skill-name>
description: What it does AND when to use. Include trigger phrases.
---
# <Skill Name>
<one-paragraph scope>
## When to use
- <bullet>
## Workflow / Quick start
<≤30 lines>
## References
- [reference/...](reference/...)
## Anti-Patterns
… Author text anchors workflow facts; Fluxly only indexes current sections, terms, files, and commands.
sections -> Hard caps (enforced by scripts/skilllinter.py) → Principles → File structure → SKILL.md template → When to use → Workflow / Quick start
terms -> Brevity first. · Progressive disclosure. · Separation of concern. · Single canonical home · all four · Generalizable. · Material improvement. · Not already captured
files/cmd -> scripts/skilllinter.py · reference/.md · reference/scenarios/.md · README.md · name · description · DO NOT · MUST NOT
body sha256 -> d5d9d4d562db
Decide Fit First
Design Intent
How To Use It
Boundaries And Review