|
| 1 | +--- |
| 2 | +name: add-reference |
| 3 | +description: Instructions for adding new blog posts, talks, or other references to REFERENCES.md |
| 4 | +--- |
| 5 | + |
| 6 | +# Skill: Adding a new Reference to REFERENCES.md |
| 7 | + |
| 8 | +This skill provides instructions for Junie to analyze a new reference (blog post, podcast, conference talk, etc.), determine if it belongs in `REFERENCES.md` or `SOLUTIONS.md`, collect missing information, and add it to the correct section of `REFERENCES.md` following the existing format. |
| 9 | + |
| 10 | +## Distinguishing Between SOLUTIONS.md and REFERENCES.md |
| 11 | + |
| 12 | +Unless the user explicitly specifies the target file, follow these rules: |
| 13 | + |
| 14 | +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. |
| 15 | + - *Walkthroughs*: Step-by-step guides for solving specific challenges. |
| 16 | + - *Hacking Videos*: Screencasts of hacking sessions. |
| 17 | + - *Scripts & Tools*: Python scripts, ZAP templates, etc., that solve or help solve challenges. |
| 18 | + - *Spoilers*: Any content that contains full spoilers for challenges should ideally go here. |
| 19 | + |
| 20 | +2. **REFERENCES.md**: Use this for general mentions, news, blog posts about the project, conference talks, or appearances. |
| 21 | + - *News*: Announcements of new releases, leadership changes, or project milestones. |
| 22 | + - *General Mentions*: Blog posts or podcasts where Juice Shop is mentioned but not the primary focus or not a solution guide. |
| 23 | + - *Appearances*: Conference or meetup talks, lectures, and trainings. |
| 24 | + - *Educational*: General application security education that uses Juice Shop as an example but isn't a "how-to-solve-it" guide. |
| 25 | + |
| 26 | +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. |
| 27 | + |
| 28 | +## General Workflow |
| 29 | + |
| 30 | +1. **Analyze the Initial Prompt**: Identify the URL(s) and any provided metadata (author, title, date, event name). |
| 31 | +2. **Determine Reference Type**: Based on the content and URL, categorize the reference into one of the supported types. |
| 32 | +3. **Crawl URL(s)**: Use the `bash` tool with `curl` to fetch the content of the provided link(s). |
| 33 | + - Look for: Title, Author, Date, Description. |
| 34 | + - Check for additional resources: If it's a blog post, check for an embedded video (YouTube, Vimeo, etc.). If it's a talk, look for slides or a video recording. |
| 35 | +4. **Infer Icons & Metadata**: |
| 36 | + - `:bulb:`: Content contains hints for solving challenges. |
| 37 | + - `:godmode:`: Content contains full challenge spoilers. |
| 38 | + - `:mega:`: Short shout-out or mention. |
| 39 | + - `:dollar:`: Commercial/paid resource. |
| 40 | + - `[:camera:]`: Link to a photo (common in Awards). |
| 41 | + - `(YouTube)`: If a video version is available for a podcast or blog. |
| 42 | +5. **Identify Missing Information**: If any mandatory information for the type is missing after crawling, ask the user for it. |
| 43 | +6. **Find the Correct Section**: Locate the target section in `REFERENCES.md`. |
| 44 | + - Note: Conference appearances are ordered by year (descending) and then roughly by date (descending). |
| 45 | +7. **Format the Entry**: Use the specific formatting rules for the identified type. |
| 46 | +8. **Update Table of Contents**: If a new year is added to "Conference and Meetup Appearances", update the TOC. |
| 47 | +9. **Skip Validation Commands**: Since `REFERENCES.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 `SOLUTIONS.md`) was modified. |
| 48 | + |
| 49 | +## Supported Types |
| 50 | + |
| 51 | +Refer to the specific instructions for each type: |
| 52 | + |
| 53 | +- [Pod- & Webcasts](types/podcast.md) |
| 54 | +- [Blogs & Articles](types/blog.md) |
| 55 | +- [Lectures and Trainings](types/lecture.md) |
| 56 | +- [Summits & Open Source Events](types/summit.md) |
| 57 | +- [Google Summer of Code](types/gsoc.md) |
| 58 | +- [Conference and Meetup Appearances](types/conference.md) |
| 59 | +- [Awards](types/award.md) |
| 60 | +- [Usage in Tools & Products](types/tools.md) |
| 61 | + |
| 62 | +## Common Formatting Rules |
| 63 | + |
| 64 | +- Use `*` for list items. |
| 65 | +- Links are in `[Title](URL)` format. |
| 66 | +- Mention authors/speakers with "by [Name](Link)" or "with [Name](Link)". |
| 67 | +- Use existing icons (:bulb:, :godmode:, :mega:, :dollar:) where appropriate. |
| 68 | +- For non-English content, add the language code in parentheses, e.g., `(:de:)`, `(:es:)`. |
0 commit comments