juice-shop/pwning-juice-shop/challenge-documentation
- community
Checking that the SKILL.md file is still in the repository.
Structural blueprint and AsciiDoc layout reference for challenges in Pwning OWASP Juice Shop.
Install
npx vskill@latest install juice-shop/pwning-juice-shop/challenge-documentationSKILL.md
Challenge Documentation and Structure Skill
This skill defines the canonical documentation architecture, layout conventions, and AsciiDoc formatting rules for challenges across the OWASP Juice Shop companion guide (pwning-juice-shop).
1. Guidance Layering & Precedence
When multiple guidance layers apply during documentation tasks, resolve conflicts using the following precedence:
- Explicit Task Instructions: Direct constraints and scopes provided in the active prompt.
- Checklists & Templates:
.ai/challenge-maintenance/checklists/challenge_verification.mdand.ai/challenge-maintenance/templates/new_challenge_section.adoc(govern quality gating and section structure). - Operational Maintenance Guidance:
.ai/challenge-maintenance/SKILL.md(governs mutation workflows and synchronization rules). - Structural Reference: This document (
.ai/challenge-documentation/SKILL.md— governs layout architecture and AsciiDoc conventions). - General Operating Guidelines:
AGENTS.md(repository-wide governance and operational rules).
2. Source of Truth & Repository Targets
- Source of Truth:
docs/modules/ROOT/assets/data/challenges.ymlis the canonical authority for challenge definitions (names, keys, categories, descriptions, difficulties, hints, and tags). Documentation text expands upon this source with educational context but must never contradict it. - Repository Targets:
- Centralized Index Tables:
docs/modules/ROOT/pages/part2/README.adoc - Category Chapter Files:
docs/modules/ROOT/pages/part2/<category>.adoc(e.g.,injection.adoc,xss.adoc,broken-access-control.adoc) - Solutions Appendix:
docs/modules/ROOT/pages/appendix/solutions.adoc - Challenge Tag Catalog:
docs/modules/ROOT/pages/part1/challenges.adoc - Hint Partials (Read-Only Reference):
docs/modules/ROOT/partials/hints/*.adoc
3. Explicit Change Boundaries
- Permitted Modifications:
- Updating challenge rows in
docs/modules/ROOT/pages/part2/README.adoc. - Adding or updating challenge sections and summary tables in
docs/modules/ROOT/pages/part2/<category>.adoc. - Adding or updating solution steps or placeholders in
docs/modules/ROOT/pages/appendix/solutions.adoc. - Adding new challenge tags to
docs/modules/ROOT/pages/part1/challenges.adoc. - Strictly Prohibited Modifications:
- Hint Partials: AI agents MUST NEVER create, edit, or delete files in
docs/modules/ROOT/partials/hints/. These are managed exclusively by thepartialize_hints.ymlpipeline (./partializeHints.sh). - Score Board Challenge: The Score Board challenge (
scoreBoardChallenge) has no hints and must NEVER have a hint partial file or hintinclude::directive. - Antora & Site Infrastructure: Do NOT modify
antora-playbook.yml,docs/antora.yml,package.json, or.github/workflows/*during documentation tasks. - Unrelated Content: Do NOT touch non-challenge chapters (
introduction/,part1/non-tag files,part3/,part4/,part5/) unless explicitly instructed.
4. Documentation Architecture & Layout Conventions
Centralized Challenge Tables (part2/README.adoc)
All challenges are listed in docs/modules/ROOT/pages/part2/README.adoc. The tables are conditionally rendered based on the {is_ctf} attribute:
- CTF Mode (`ifeval::[{is_ctf} == 1]`):
- Columns:
Name,Description,Hints. Hintscolumn contains anxreflink with bulb emoji (💡) to the specific challenge section in its category page (e.g.,xref:part2/xss.adoc#_anchor_name[💡]).- Normal Mode (`ifeval::[{is_ctf} == 0]` or default block):
- Columns:
Name,Description,Hints,Solution. Hintscolumn: identical to CTF mode.Solutioncolumn contains anxreflink with book emoji (📕) to the step-by-step solution inappendix/solutions.adoc(e.g.,xref:appendix/solutions.adoc#_anchor_name[📕]).- Ordering: Both tables must be sorted alphabetically by challenge name.
Category Pages (part2/<category>.adoc)
Challenges are grouped into category files in docs/modules/ROOT/pages/part2/. Each page follows this structure:
- Category Overview: Educational description of the vulnerability type.
- Challenges Overview Table: Summary table listing
Name,Description, andDifficulty(represented by star emojis: ⭐ to ⭐⭐⭐⭐⭐⭐). Sorted alphabetically by challenge name. - Reconnaissance Advice: (Optional) Practical reconnaissance tips.
- Challenge Sections: Dedicated
==level heading for each challenge:
- Anchor:
[[_{anchor_name}]]immediately preceding the header. Anchor name is lowercase, special characters removed, spaces replaced by underscores. - Heading Text: Usually the challenge description or a concise instructional title.
- Body Prose: Original, high-quality prose explaining challenge context. Do NOT copy descriptions verbatim from
challenges.ymlor concatenate hints. - Hints Include:
include::../../partials/hints/{challengeKey}.adoc[]. - Add active include ONLY if the partial exists in
docs/modules/ROOT/partials/hints/. - If the partial does not yet exist, comment out the directive (
// include::../../partials/hints/{challengeKey}.adoc[]) and add a🚧 Work in progress...notice. - Exception:
scoreBoardChallengehas no hints and no include.
Step-by-Step Solutions (appendix/solutions.adoc)
All solutions are centralized in docs/modules/ROOT/pages/appendix/solutions.adoc:
- Grouped by difficulty levels (
== ⭐ Challengesthrough== ⭐⭐⭐⭐⭐⭐ Challenges). - Each solution has a
=== {Section Header}subsection matching the challenge section title in the category page. - Subsections are sorted alphabetically within each difficulty level.
- Format: Numbered step list, optional screenshots (
image::appendix/...), and references assuminghttp://localhost:3000as the default host.
5. Handling Ambiguity & Unmapped Source Data
- Missing Solution Steps: When adding a challenge without verified solution steps, insert the standard placeholder
// TODO Add solution for {challengeKey}under the=== {Section Header}. Never fabricate walkthrough steps, payloads, or credentials. - Unmapped Categories: If a challenge in
challenges.ymlreferences a category without an existingpart2/<category>.adocfile, do not create ad-hoc files without verifying againstdocs/modules/ROOT/nav.adocand existing structure. - Missing Hint Partials: Do not create placeholder files in
partials/hints/. Keep the include directive commented out until the upstream pipeline generates the file.
6. Verification & Quality Assurance
Before completing documentation updates, verify:
- Alphabetical Ordering: Verify
part2/README.adoctables, category summary tables, tag lists, and solution subsections. - Anchor & Link Integrity: Ensure all
xreftargets inpart2/README.adocresolve to valid anchors in category pages andsolutions.adoc. - Include Validity: Ensure no uncommented
include::directives point to missing partial files.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryChecking.ai/challenge-documentation/SKILL.md
Popularity
- 7-day trend score
- 5
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/juice-shop/pwning-juice-shop/challenge-documentation)