Skip to content

Commit 938ed1d

Browse files
authored
Merge pull request #1 from CodeAnt-AI/chore/sync-upstream-2026-08-04
chore: sync latest upstream Juice Shop
2 parents 2905eed + ca9910b commit 938ed1d

1,150 files changed

Lines changed: 54779 additions & 34045 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.ai/skills/add-reference/SKILL.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
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:)`.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Type: Awards
2+
3+
## Format
4+
5+
```markdown
6+
* [Award Name](Link) in [Month Year] ([:camera:](Photo Link))
7+
```
8+
9+
## Details
10+
11+
- **Title**: The name of the award.
12+
- **Date**: The month and year the award was received.
13+
- **Photo**: Check for a tweet, photo, or announcement link and use the `[:camera:]` icon.
14+
15+
## Example
16+
17+
```markdown
18+
* [Heroku Button of the Month](https://hello.heroku.com/webmail/844098776/9fe33b8eda9eb79bca7ee569888b1874) in March 2019 ([:camera:](https://twitter.com/owasp_juiceshop/status/1110641064673710080))
19+
```
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Type: Blogs & Articles
2+
3+
## Format
4+
5+
```markdown
6+
* Blog post on [Blog Name](Blog Link) by [Author](Link): [Title](Link)
7+
* Article [(:lang:)] on [Publication Name](Link) by [Author](Link): [Title](Link)
8+
```
9+
10+
## Details
11+
12+
- **Language**: If the article is not in English, add the language code in parentheses, e.g., `(:de:)`, `(:es:)`.
13+
- **Blog/Publication Name**: The name of the hosting blog or site.
14+
- **Author**: The person who wrote the article.
15+
- **Embedded Content**: Check the blog post for embedded YouTube or Vimeo videos. If present, add the video link as `([YouTube](Link))` or similar.
16+
17+
## Example
18+
19+
```markdown
20+
* Blog post on [OWASP.org](https://owasp.org) by Björn Kimminich: [OWASP Juice Shop 2023 achievements and beyond](https://owasp.org/blog/2023/10/10/juice-shop-2023.html)
21+
```
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Type: Conference and Meetup Appearances
2+
3+
## Format
4+
5+
```markdown
6+
* [Talk Title](Talk Link) by [Speaker](Link), [Event Name](Event Link), [Location], [Date] ([Video Link] [Icons])
7+
* [Workshop Title](Workshop Link) with [Instructor](Link), [Event Name](Event Link), [Location], [Date]
8+
```
9+
10+
## Details
11+
12+
- **Ordering**: Add the talk to the correct year section.
13+
- **Year**: If the year doesn't exist yet, create a new `#### YYYY` header and update the Table of Contents.
14+
- **Title**: The title of the talk or workshop.
15+
- **Speaker/Instructor**: Use "by" for talks and "with" for workshops.
16+
- **Event Name**: The conference or meetup name.
17+
- **Location**: City and country (if applicable).
18+
- **Date**: The date of the event (e.g., 29.05.2025).
19+
- **Video/Media**: Check for recordings (YouTube, media.ccc.de, Vimeo). Add as `([YouTube](Link))` or similar.
20+
21+
## Example
22+
23+
```markdown
24+
* [OWASP Juice Shop: Take your security vitamins!](https://ndcsecurity.com/agenda/owasp-juice-shop-take-your-security-vitamins/7a1238226e90) by Björn Kimminich & Jannik Hollenbach, [NDC Security 2026](https://ndcsecurity.com/), Oslo, 05.03.2026
25+
```
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Type: Google Summer of Code
2+
3+
## Format
4+
5+
```markdown
6+
* Student projects from [Google Summer of Code YYYY](Link)
7+
* [Project Title](Project Link) by [Student](Link) (mentored by [Mentor](Link))
8+
```
9+
10+
## Details
11+
12+
- **Ordering**: GSoC projects are grouped by year.
13+
- **Year**: Find the corresponding year entry.
14+
- **Title**: The name of the GSoC project.
15+
- **Student/Mentor**: Link both student and mentors where possible.
16+
17+
## Example
18+
19+
```markdown
20+
* Student projects from [Google Summer of Code 2023](https://summerofcode.withgoogle.com/archive/2023/projects)
21+
* [Companion Guide Tech Stack](https://summerofcode.withgoogle.com/organizations/owasp-foundation/projects/details/h2der3Mf) by Parth Nanda (mentored by Jannik Hollenbach, Björn Kimminich and Shubham Palriwala)
22+
```
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Type: Lectures and Trainings
2+
3+
## Format
4+
5+
```markdown
6+
* [Title](Link) [course/training/...] by [Author/Instructor](Link) [Icons]
7+
```
8+
9+
## Details
10+
11+
- **Title**: The name of the course or training.
12+
- **Author/Instructor**: The person or organization providing the content.
13+
- **Icons**: Be sure to check for commercial resources (`:dollar:`) or spoilers (`:godmode:`).
14+
15+
## Example
16+
17+
```markdown
18+
* [Introduction to OWASP Top 10 Security Risks](https://www.pluralsight.com/cloud-guru/courses/introduction-to-owasp-top-10-security-risks) course by Chris Jackson :dollar:
19+
```
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Type: Pod- & Webcasts
2+
3+
## Format
4+
5+
```markdown
6+
* [Title](Link) on [Podcast Name](Podcast Link) with [Host Name](Host Link)
7+
* [Title](Link) by [Author](Link) with [Collaborator](Link)
8+
```
9+
10+
## Details
11+
12+
- **Title**: The specific episode title.
13+
- **Podcast Name**: The name of the podcast or YouTube channel.
14+
- **Authors/Speakers**: Identify the main speakers. Use "by" or "with" as appropriate.
15+
- **Video version**: Check if the podcast has a YouTube version. If so, link it as `([YouTube](Link))` after the main entry.
16+
17+
## Example
18+
19+
```markdown
20+
* [Application Security Podcast](https://securityjourney.com/application-security-podcast):
21+
* [Björn Kimminich -- OWASP Juice Shop](https://www.buzzsprout.com/1730684/14121640-bjorn-kimminich-owasp-juice-shop) ([YouTube](https://youtu.be/ay5A7BcZxIs?si=nzhYfVqG5o7l9bWA))
22+
```
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Type: Summits & Open Source Events
2+
3+
## Format
4+
5+
```markdown
6+
* [Event Section Title](Event Link), [Date]
7+
* [Session/Talk Title](Session Link) with [Speakers], [Date] ([Video Link] [Icons])
8+
```
9+
10+
## Details
11+
12+
- **Event**: The main event title and date range.
13+
- **Session**: Specific talk or workshop within the event.
14+
- **Speakers**: Use "with" to list speakers/facilitators.
15+
- **Icons**: Check for mentions (`:mega:`), spoilers (`:godmode:`), etc.
16+
17+
## Example
18+
19+
```markdown
20+
* Juice Shop at [OWASP Project Summit 2026](https://projectsummit.owasp.org), 04.-10.03.2026
21+
* [OWASP Contributor Mixer](https://luma.com/txn0myuk?tk=BHp1Ej), 05.03.2026
22+
* [OWASP Juice Shop: For Developers](https://luma.com/4hp7c8bm) with Björn Kimminich & Jannik Hollenbach, 06.03.2026
23+
```
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Type: Usage in Tools & Products
2+
3+
## Format
4+
5+
```markdown
6+
* [Organization/Tool](Link) uses Juice Shop as an example for [Specific Use Case](Link)
7+
```
8+
9+
## Details
10+
11+
- **Organization/Tool**: The name of the organization or tool using Juice Shop.
12+
- **Specific Use Case**: A brief description of how it is being used.
13+
14+
## Example
15+
16+
```markdown
17+
* [How to try GitHub Advanced Security with your team](https://resources.github.com/security/tools/ghas-trial/) uses Juice Shop as an example for CI/CD integration in [Code scanning in action with Juice Shop](https://resources.github.com/security/tools/ghas-trial/#code-scanning-in-action-with-juice-shop)
18+
```

.ai/skills/add-solution/SKILL.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
---
2+
name: add-solution
3+
description: Instructions for adding new hacking guides, videos, or tools to SOLUTIONS.md
4+
---
5+
6+
# Skill: Adding a new Solution or Tool to SOLUTIONS.md
7+
8+
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.
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, tool name).
31+
2. **Crawl URL(s)**: Use the `bash` tool with `curl` or `fetch_url` to fetch the content of the provided link(s).
32+
- Look for: Title, Author, Juice Shop version (🧃), Language code (e.g., `:de:`).
33+
3. **Determine Category**:
34+
- [Hacking Videos](types/video.md)
35+
- [Walkthroughs](types/walkthrough.md)
36+
- [Scripts & Tools](types/tool.md)
37+
4. **Infer Metadata**:
38+
- `🧃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.
39+
- `:broken_heart:`: Mark resources that rely on cheating (e.g., using hints or external tools not intended for the challenge).
40+
- Language code: e.g., `(:de:)`, `(:es:)`, `(:id:)`.
41+
5. **Identify Missing Information**: If mandatory information (like the Juice Shop version or author) is missing, ask the user.
42+
6. **Find the Correct Section**: Locate the target section in `SOLUTIONS.md`.
43+
7. **Format the Entry**: Use the specific formatting rules for the identified type.
44+
8. **Update Table of Contents**: If a new top-level section is added (rare), update the TOC.
45+
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.
46+
47+
## Common Formatting Rules
48+
49+
- Use `*` for list items.
50+
- Links are in `[Title](URL)` format.
51+
- Mention authors with "by [Name](Link)".
52+
- The Juice Shop version is mentioned as `(🧃`vX.x`)`.
53+
- For non-English content, add the language code in parentheses, e.g., `(:de:)`, `(:es:)`.
54+
- **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).

0 commit comments

Comments
 (0)