- name
- add-solution
- description
- Instructions for adding new hacking guides, videos, or tools to SOLUTIONS.md
# Skill: Adding a new Solution or Tool to SOLUTIONS.md
This skill provides instructions for Junie to analyze a new hacking guide, video, or tool, determine if it belongs in `SOLUTIONS.md` or `REFERENCES.md`, collect necessary metadata, and add it to the correct section f `SOLUTIONS.md` following the existing format.
## Distinguishing Between SOLUTIONS.md and REFERENCES.md
Unless the user explicitly specifies the target file, follow these rules:
1. **SOLUTIONS.md**: Use this for content that is specifically a "how-to" for hacking Juice Shop or a tool that automates/assists in hacking it.
- *Walkthroughs*: Step-by-step guides for solving specific challenges.
- *Hacking Videos*: Screencasts of hacking sessions.
- *Scripts & Tools*: Python scripts, ZAP templates, etc., that solve or help solve challenges.
- *Spoilers*: Any content that contains full spoilers for challenges should ideally go here.
2. **REFERENCES.md**: Use this for general mentions, news, blog posts about the project, conference talks, or appearances.
- *News*: Announcements of new releases, leadership changes, or project milestones.
- *General Mentions*: Blog posts or podcasts where Juice Shop is mentioned but not the primary focus or not a solution guide.
- *Appearances*: Conference or meetup talks, lectures, and trainings.
- *Educational*: General application security education that uses Juice Shop as an example but isn't a "how-to-solve-it" guide.
If in doubt, and the content contains spoilers (indicated by `:godmode:` or `:bulb:`), prefer `SOLUTIONS.md` if it is a guide/video/tool. If it is a blog post or talk, prefer `REFERENCES.md` with the appropriate icon.
## General Workflow
1. **Analyze the Initial Prompt**: Identify the URL(s) and any provided metadata (author, title, tool name).
2. **Crawl URL(s)**: Use the `bash` tool with `curl` or `fetch_url` to fetch the content of the provided link(s).
- Look for: Title, Author, Juice Shop version (🧃), Language code (e.g., `:de:`).
3. **Determine Category**:
- [Hacking Videos](types/video.md)
- [Walkthroughs](types/walkthrough.md)
- [Scripts & Tools](types/tool.md)
4. **Infer Metadata**:
- `🧃vX.x`: Look for the version of Juice Shop mentioned in the content. If not found, use the latest major version if the content is recent.
- `:broken_heart:`: Mark resources that rely on cheating (e.g., using hints or external tools not intended for the challenge).
- Language code: e.g., `(:de:)`, `(:es:)`, `(:id:)`.
5. **Identify Missing Information**: If mandatory information (like the Juice Shop version or author) is missing, ask the user.
6. **Find the Correct Section**: Locate the target section in `SOLUTIONS.md`.
7. **Format the Entry**: Use the specific formatting rules for the identified type.
8. **Update Table of Contents**: If a new top-level section is added (rare), update the TOC.
9. **Skip Validation Commands**: Since `SOLUTIONS.md` is a plain text file, running `npm run lint`, `npm test`, or any other validation commands is unnecessary if *only* this file (and/or `REFERENCES.md`) was modified.
## Common Formatting Rules
- Use `*` for list items.
- Links are in `[Title](URL)` format.
- Mention authors with "by [Name](Link)".
- The Juice Shop version is mentioned as `(🧃`vX.x`)`.
- For non-English content, add the language code in parentheses, e.g., `(:de:)`, `(:es:)`.
- **Everything** in `SOLUTIONS.md` is considered a spoiler, so individual icons like `:godmode:` are generally not used for the entry itself (unless it's a sub-item in a list that needs distinguishing).
View on GitHub