Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
d60e7be
Add Slidev presentation on Agent Skills and Mapbox skills
mattpodwysocki Mar 10, 2026
faa9b04
Fix Prettier formatting and last slide frontmatter
mattpodwysocki Mar 10, 2026
b637ffe
Exclude presentations/ from Prettier (Slidev uses --- as slide separa…
mattpodwysocki Mar 10, 2026
e12cd86
Exclude presentations/ from markdownlint (Slidev uses multiple H1s pe…
mattpodwysocki Mar 10, 2026
98a238b
Add intro slides: the problem, why skills, why Mapbox, skills as stra…
mattpodwysocki Mar 10, 2026
d39771c
Add three slides on writing and benchmarking evals for your own skill
mattpodwysocki Mar 10, 2026
bbf6e88
Add CTA slides for uncovered skill areas and community contributions
mattpodwysocki Mar 11, 2026
69fecb9
Add contact info to title slide
mattpodwysocki Mar 11, 2026
8bade45
Split benchmark slide, shorten skill names to fit table on screen
mattpodwysocki Mar 12, 2026
2a53b22
Fix callout box colors for dark theme — replace light bg with translu…
mattpodwysocki Mar 12, 2026
f4a768c
Tighten benchmark results slide to prevent overflow
mattpodwysocki Mar 12, 2026
04e11b2
Remove border box from benchmark results slide
mattpodwysocki Mar 12, 2026
44d66c6
Add slide: use Claude's built-in skill-creator to write skills and evals
mattpodwysocki Mar 12, 2026
8f1dfed
Add slide: discovering skills on skills.sh and installing via npx
mattpodwysocki Mar 12, 2026
fa5686e
Reorder slides for coherent narrative flow
mattpodwysocki Mar 12, 2026
ebf43aa
Add Claude automated code review workflow
mattpodwysocki Mar 13, 2026
fcb84e9
Remove id-token permission so action uses API key instead of GitHub App
mattpodwysocki Mar 13, 2026
ef6d843
Pass github_token explicitly to bypass Claude Code GitHub App exchange
mattpodwysocki Mar 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions .github/workflows/claude-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Claude Code Review

on:
pull_request:
types: [opened, synchronize, reopened]
issue_comment:
types: [created]

jobs:
claude-review:
if: >
(github.event_name == 'pull_request') ||
(github.event_name == 'issue_comment' && github.event.issue.pull_request && contains(github.event.comment.body, '@claude'))
runs-on: ubuntu-latest
permissions:
id-token: write
actions: read
contents: read
Comment on lines +17 to +18

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The id-token: write permission is only needed for GitHub OIDC token exchange (GitHub App auth). Since this workflow uses ANTHROPIC_API_KEY directly (and the commit history suggests this was intentionally removed at one point), this permission can be dropped to follow least-privilege:

Suggested change
actions: read
contents: read
actions: read

pull-requests: write
issues: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Check PR size
if: github.event_name == 'pull_request'
id: pr-size
run: |
CHANGED_LINES=$(git diff --stat origin/${{ github.event.pull_request.base.ref }}...origin/${{ github.event.pull_request.head.ref }} | tail -1 | awk '{gsub(/[^0-9]/, " "); print $1 + $2}')

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This awk extraction is fragile — git diff --stat summary format varies (e.g., " 8 files changed, 9953 insertions(+)" vs " 1 file changed, 3 insertions(+), 1 deletion(-)") and gsub(/[^0-9]/, " ") strips all non-digits then sums the first two numbers, which could pick up the file count instead of insertions.

A more robust approach using --numstat:

Suggested change
CHANGED_LINES=$(git diff --stat origin/${{ github.event.pull_request.base.ref }}...origin/${{ github.event.pull_request.head.ref }} | tail -1 | awk '{gsub(/[^0-9]/, " "); print $1 + $2}')
CHANGED_LINES=$(git diff --numstat origin/${{ github.event.pull_request.base.ref }}...origin/${{ github.event.pull_request.head.ref }} | awk '{ added += $1; removed += $2 } END { print added + removed }')

CHANGED_LINES=${CHANGED_LINES:-0}
echo "changed_lines=$CHANGED_LINES" >> "$GITHUB_OUTPUT"
echo "PR has $CHANGED_LINES changed lines"

- name: Claude Code Review
if: >
github.event_name == 'issue_comment' ||
(github.event_name == 'pull_request' && fromJSON(steps.pr-size.outputs.changed_lines) >= 300)
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
github_token: ${{ secrets.GITHUB_TOKEN }}
trigger_phrase: "@claude"
track_progress: true
prompt: |
Review this PR focusing on:
1. Accuracy - technical content is correct for the Mapbox APIs and SDKs referenced
2. Skill structure - each skill has a valid frontmatter block (name, description, triggers, content) matching the schema in CONTRIBUTING.md
3. Clarity - guidance is actionable and unambiguous; code examples are complete and runnable
4. Consistency - tone, formatting, and depth match existing skills in the repo
5. Scope - skills stay focused on their stated topic; no unnecessary overlap with other skills

Do NOT suggest adding more skills beyond what the PR introduces.
Do NOT flag minor prose style preferences as issues.

Provide detailed inline comments for specific issues.
claude_args: '--model claude-opus-4-6 --allowedTools "Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*),mcp__github_inline_comment__create_inline_comment,Read,Grep,Glob,Bash(git log:*),Bash(git diff:*),Bash(git show:*),Bash(git blame:*),Bash(git rev-parse:*),WebFetch(domain:github.com)"'

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: This line is 430+ characters. Consider using a YAML block scalar for readability and easier maintenance:

claude_args: >-
  --model claude-opus-4-6
  --allowedTools
  "Bash(gh issue view:*),Bash(gh search:*),..."

1 change: 1 addition & 0 deletions .markdownlintignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ node_modules
build
**/build/**
.git
presentations/**
3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ package-lock.json
.git
CHANGELOG.md

# Slidev presentations (use --- as slide separators, not Markdown HR)
presentations/

# Build artifacts
**/build/
**/.gradle/
Expand Down
3 changes: 3 additions & 0 deletions presentations/mapbox-skills/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules/
dist/
*.pdf
38 changes: 38 additions & 0 deletions presentations/mapbox-skills/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Mapbox Agent Skills — Presentation

A [Slidev](https://sli.dev) presentation covering Agent Skills and the Mapbox skills library.

## Running

```bash
cd presentations/mapbox-skills
npm install
npm run dev
```

Then open [http://localhost:3030](http://localhost:3030).

## Building

```bash
npm run build # outputs to dist/
npm run export # exports to PDF
```

## Slides

1. Title — Mapbox Agent Skills

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The slide order listed here doesn't match the actual order in slides.md. For example, "Why Agent Skills?" and "Why Mapbox Needs Skills" appear before the deep dives in the actual deck but aren't listed here, while "Skills + MCP: Better Together" is in the deck but missing from this list. Consider regenerating this list from the actual slide headings to keep it accurate.

2. What Are Agent Skills? (tools vs skills vs prompts)
3. How Skills Work (install commands)
4. Skill Structure (file layout + frontmatter)
5. 18 Skills Across 6 Domains (overview)
6. 18 Skills (cont.) — MCP, migration, security
7. Deep Dive: Web Performance
8. Deep Dive: iOS & Android
9. Deep Dive: MCP Integration
10. Skill Benchmarks (evals)
11. Why Evals Matter (base model failures)
12. Skills + MCP: Better Together
13. Contributing a Skill
14. Resources
15. Q&A
Loading
Loading