Add a skill that draws flat-editorial flowchart illustrations for
engineering blog posts. It bundles the design tokens and markup
primitives of the style, plus scripts/flowfig.py, which renders a
Mermaid flowchart subset into that markup and exports PNG through
headless Chrome. The Rubik latin subset ships under assets/fonts with
its OFL license so output needs no network.
Register the skill in the README table, .claude/settings.json and the
claude-settings-audit allowlist.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XQqb2CLHz4F89Utoqrq5QM
Align supply-chain guidance with internal policy: require full SHA
pins for third-party actions in privileged jobs, and stop flagging
first-party actions/* / github/* version tags as findings.
Co-Authored-By: Greg Pstrucha <greg.pstrucha@sentry.io>
Make `iterate-pr` explicitly model-invocable in both Claude Code and
Codex.
Claude now records `disable-model-invocation: false`, while Codex gets
the matching `agents/openai.yaml` metadata with
`policy.allow_implicit_invocation: true` and a focused default prompt.
The skill specification records the intended trigger behavior.
The shared skill-authoring guidance and repository checklist now
document how to keep Claude and Codex invocation policy aligned,
following the established pattern in `dcramer/agents`.
<!-- junior-request-attribution:start -->
Requested by **David Cramer** via Junior.
<!-- junior-request-attribution:end -->
<!-- junior-session-footer:start -->
<!-- junior-conversation-id:slack%3AC0B595QDZLL%3A1784935323.178399 -->
--
[View Junior
Session](https://junior-prod.sentry.dev/conversations/slack%3AC0B595QDZLL%3A1784935323.178399)
<!-- junior-session-footer:end -->
Co-authored-by: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com>
Co-authored-by: David Cramer <david@sentry.io>
Remove the per-repo Warden workflow now that review runs org-wide from
`getsentry/.github`.
**Local workflow cleanup**
Deletes `.github/workflows/warden.yml` so PRs no longer double-run the
local Warden action alongside the global workflow. Keeps `warden.toml`
for repo-specific skill-scanner config.
**Checks**
- Diff review only (instruction/config deletion; no runtime tests
applicable)
<!-- junior-request-attribution:start -->
Requested by **David Cramer** via Junior.
<!-- junior-request-attribution:end -->
<!-- junior-session-footer:start -->
--
[View Junior
Session](https://junior-prod.sentry.dev/conversations/slack%3AC0B595QDZLL%3A1784648919.072179)
<!-- junior-session-footer:end -->
Co-authored-by: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com>
Co-authored-by: David Cramer <david@sentry.io>
The commit and `pr-writer` skills now concentrate runtime guidance on
the
decisions agents need while committing or preparing review. Commit
guidance
retains branch protection, conventional formatting, privacy, and footer
rules
in 62 lines. PR guidance consolidates full-diff inspection, title and
body
selection, optional reviewer aids, safety boundaries, and create/update
commands in 160 lines.
Agent attribution requirements are removed from the repository policy
and the
matching PR spec and eval. PR inspection now handles both existing and
first-time PRs, expands `$BASE` correctly, and uses body-file commands
instead
of embedded heredocs.
This standardizes skill evaluation on AXIS, using its built-in Codex
adapter so evals run through the real `codex exec --json` harness
instead of custom runner scripts.
The new maintainer path for `skill-writer` is:
```bash
npx @netlify/axis run --config skills/skill-writer/evals/axis.config.json
npx @netlify/axis run --config skills/skill-writer/evals/axis.config.json --scenario small-inline-workflow
npx @netlify/axis reports latest --config skills/skill-writer/evals/axis.config.json --html
```
Each AXIS scenario copies the repo into an isolated temp workspace,
excludes local agent/report state, installs the local skill under test
with `skills: ["./.."]`, runs Codex, and captures
transcript/judge/artifact evidence. Generated `.axis/` report
directories are now ignored so local eval runs do not pollute future
diffs.
The initial `skill-writer` evals cover three behavior classes:
- `small-inline-workflow`: catches simple skills being overbuilt with
references, scripts, or broad source research.
- `reference-backed-integration`: checks that complex/integration skills
keep `SKILL.md` as a router and split optional depth into focused
references.
- `iteration-from-bad-output`: checks that `skill-writer` can improve an
existing bloated skill by narrowing triggers and removing unnecessary
files.
The runtime `references/skill-evals.md` teaches future skills the same
pattern: add `EVAL.md`, `evals/axis.config.json`, and focused AXIS
scenarios with observable judge checks. It explicitly keeps AXIS as the
prescribed skill-eval framework and treats Promptfoo/custom Codex
scripts as out of scope for this repo's skill evals.
`pr-writer` gets a proof eval focused on actual behavior rather than
eval plumbing:
```bash
npx @netlify/axis run --config skills/pr-writer/evals/axis.config.json --scenario concise-docs-pr
```
That scenario creates a docs-only skill change and verifies the
generated PR title/body stay concise, use an appropriate conventional
title, avoid template headings, and omit validation/tool boilerplate.
The renamed `concise-docs-pr` case is meant to be a pattern for
behavior-focused eval cases, not framework smoke tests.
I exercised the new paths locally: `small-inline-workflow` completed
through AXIS/Codex with score 94, and `concise-docs-pr` completed with
score 99. Structural validation also passed for both `skill-writer` and
`pr-writer`.
Co-authored-by: GPT-5 Codex <codex@openai.com>
The `pr-writer` skill now steers PR descriptions toward the full branch
diff instead of the latest commit or a generated template. Small changes
should stay short, while breaking changes, schema updates, generated
diffs, and workflow changes get the extra context reviewers need.
Schemas, before/after examples, Mermaid diagrams, rollout notes, and
review order are treated as optional reviewer aids, not default
sections. Routine validation stays out of PR bodies unless it changes
review risk.
Co-authored-by: Codex <noreply@openai.com>
pr-writer now steers agents toward reviewer-facing cover notes instead
of block-style generated changelogs. The body guidance defaults to short
natural prose, uses structure only when the change shape needs it, and
keeps issue-reference syntax out of copyable examples.
The hard safeguards stay focused on privacy, verified issue references,
and avoiding generated tool attribution. The refreshed examples show the
style we want agents to produce, and the structural skill validator
still passes.
Co-authored-by: OpenAI Codex <noreply@openai.com>
Adds a new skill that triages the unresolved queue in the Sentry
`javascript` project by archiving non-actionable noise (third-party
library frames, browser API permission errors, transient backend 5xx,
test/synthetic traffic, customer-environment proxy interference, and
single-event flukes).
The skill is intentionally narrow: only archives (never resolves or
assigns), always uses `ignoreMode=untilEscalating`, always attaches a
category-tagged reason, and never mutates without an explicit user
`apply` reply. The category taxonomy lives in
`references/archive-criteria.md` with positive signals, negative
criteria, and a decision matrix.
Registers the skill in README, `.claude/settings.json`, and the
`claude-settings-audit` allowlist.
Align step 4 with the Recovery section so a failing update_issue call
logs and continues instead of stopping the batch (the two sections
previously contradicted each other).
Move event-count thresholds in the decision matrix from the "Title
category match" column to the "Volume" column for `<unknown>` titles;
those titles never match a category, so the prior placement was
misleading.
Refs #151
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a new skill that triages the unresolved queue in the Sentry
`javascript` project by archiving non-actionable noise (third-party
library frames, browser API permission errors, transient backend 5xx,
test/synthetic traffic, customer-environment proxy interference, and
single-event flukes).
The skill is intentionally narrow: only archives (never resolves or
assigns), always uses `ignoreMode=untilEscalating`, always attaches a
category-tagged reason, and never mutates without an explicit user
`apply` reply. The category taxonomy lives in
`references/archive-criteria.md` with positive signals, negative
criteria, and a decision matrix.
Registers the skill in README, `.claude/settings.json`, and the
`claude-settings-audit` allowlist.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a new skill that appends a Sentry-style `#### Issues` block to a PR
description, referencing both the GitHub issue and the Linear ticket
resolved automatically from the issue's `linear-code` linkback comment.
### What it does
When invoked with a GitHub issue URL (or bare `#N`), the skill:
1. Resolves the current PR (or uses a supplied PR number)
2. Fetches the Linear ticket key from the issue's `linear-code` bot
comment
3. Appends/replaces an `#### Issues` section on the PR body with both
references
### Changes
- `skills/pr-link-issue/SKILL.md` — the skill itself
- `README.md` — added to the Available Skills table
- `.claude/settings.json` — added to the allowlist
- `skills/claude-settings-audit/SKILL.md` — added to the audit allowlist
### Notes
- Minor fix applied: `grep -oe` → `grep -Eoe` so `+` and `|` in the
regex work correctly with extended regex.
Action taken on behalf of Neel Shah.
---
[View Session in
Sentry](https://sentry.sentry.io/traces/?project=4510944073809921&query=gen_ai.conversation.id%3A%22slack%3AC02T4BB83AS%3A1779369072.007449%22)
Linear keys are uppercase (PY-2357, JS-1234) but the grep regex only
matched lowercase. Add -i flag to grep so it matches both cases.
Co-authored-by: Neel Shah <neel.shah@sentry.io>
Adds a new skill that appends a Sentry-style '#### Issues' block to a PR
description, referencing both the GitHub issue and the Linear ticket
resolved from the issue's linear-linkback comment.
Co-authored-by: Neel Shah <neel.shah@sentry.io>
Make `iterate-pr` stop treating draft/no-checks states and human review
gates as pending CI. The skill now reports those non-actionable states
explicitly while continuing to poll and fix actionable CI failures and
high/medium review feedback.
**Check Monitoring**
`fetch_pr_checks.py` now includes draft/review metadata and separates
actionable pending checks from human gates. `monitor_pr_checks.py` emits
explicit stop markers for no-checks, draft no-checks, and
review-gate-only states.
**Runtime Guidance**
Compress the runtime skill docs into tables and checklists, and add
`SPEC.md` to keep the scope focused on CI iteration rather than merge
readiness.
---------
Co-authored-by: OpenAI Codex <codex@openai.com>
## Problem
`${CLAUDE_SKILL_ROOT}` is used across multiple skills to reference
bundled scripts and files. This causes two problems in Claude Code:
1. **Permission friction** — variable expansion in bash commands
triggers a confirmation prompt
2. **Runtime failure** — after confirmation, the variable is not set, so
paths resolve to `/scripts/foo.py` → file not found
Reported by Phil in
[#proj-junior](https://sentry.slack.com/archives/C07P2KGJGG0/p1778225171252819).
## Changes
Replaced all `${CLAUDE_SKILL_ROOT}/...` references with
skill-root-relative paths (e.g. `scripts/foo.py`, `references/bar.md`)
per the [Agent Skills spec](https://agentskills.io/specification).
**Affected skills (8 files):**
- `iterate-pr/SKILL.md` — 14 refs → all converted; updated guidance text
- `gh-review-requests/SKILL.md` — 2 refs
- `presentation-creator/SKILL.md` — 4 refs
- `presentation-creator/references/design-system.md` — 3 refs
- `skill-scanner/SKILL.md` — 6 refs; updated guidance text
- `sred-project-organizer/SKILL.md` — 4 refs
- `skill-writer/SOURCES.md` — changelog entry added
- `skill-writer/references/registration-validation.md` — updated
meta-guidance to recommend against env var path prefixes
## Verification
```bash
# Only remaining mentions are in skill-writer changelog/meta docs (documenting the change itself)
grep -rn "CLAUDE_SKILL_ROOT" skills/ --include="*.md"
```
Closes#145
Co-authored-by: junior[bot] <junior[bot]@users.noreply.github.com>
Simplify the `skill-writer` workflow so skill changes stay sequential,
flat, and focused on author judgment instead of accumulating
deterministic guidance.
**Flat Reference Index**
Runtime references now live directly under `references/`, and `SKILL.md`
lists every routed reference with its open-when reason. The old nested
reference folders and unused eval runbooks were removed.
**Precision And Validation**
Create/update flows now require pre-edit and post-change precision
passes. `quick_validate.py` now fails only on load-bearing structure:
`SKILL.md` format, required frontmatter fields, directory-name
alignment, and missing referenced bundled files. The only remaining
warning is a high-threshold `SKILL.md` size warning.
**Simpler Generator Scope**
Remove eval/evaluator materials, the security-review-specific generator
profile, and validator heuristics for skill classes, source coverage,
SPEC headings, description style, name style, and path portability so
the core generator stays domain-neutral.
---------
Co-authored-by: Codex <codex@openai.com>
Make `pr-writer` require conventional PR titles and reject bracketed
agent/tool prefixes like `[codex]`. The title guidance now points
invalid prefixes to a conventional `fix(...)` title, and the surrounding
body guidance is shorter so the skill stays compact. Update the spec
acceptance gates so bracketed agent/tool title prefixes are explicitly
invalid.
Co-authored-by: OpenAI Codex <noreply@openai.com>
Tighten the agents-md and prompt-optimizer skills around concise,
reference-backed guidance. AGENTS.md generation now enumerates exact
external files for specs, docs, and policies, while prompt optimization
captures external context before rewriting prompts.
**Skill maintenance metadata**
Adds SPEC.md and SOURCES.md for agents-md, plus SPEC.md for
prompt-optimizer, so material behavior changes have maintenance
contracts and provenance.
**Prompt guidance**
Adds exact external context inventory rules to prompt-optimizer and
compacts the core/reference examples to keep runtime prose smaller.
Co-authored-by: Codex <noreply@openai.com>
Refresh open PRs after material follow-up changes.
The pr-writer skill now treats an existing branch PR as something to
refresh when new commits change reviewer expectations, instead of
waiting for an explicit update request. It also keeps that behavior in
the runtime path and leaves the YAML description tight.
**Existing PR Refresh**
The update flow now checks for an open PR on the current branch,
rewrites stale title and body when scope changes, and skips trivial
follow-up edits.
Co-authored-by: Codex 5.3 <codex@openai.com>
Rework `skill-writer` so it behaves more like a meta-router and less
like a prose-heavy instruction bundle. `SKILL.md` now routes every
bundled reference by explicit lookup need, the reference tree is split
into concrete leaves, and the default workflow now favors dense
checklists, tables, and templates over narrative guidance.
**Reference Routing**
The old generic pattern buckets are replaced with routed leaf files
under `references/artifact-layouts/`, `references/workflow-mechanics/`,
and `references/claude-code/`. `SKILL.md` now enumerates each bundled
reference with a direct open-when reason, and the validator enforces
direct discoverability from that router while avoiding a stale hardcoded
allowlist for provider-specific optional fields.
**Less Always-Loaded Prose**
The main runtime refs were rewritten into denser tables, checklists, and
compact decision guides. `SKILL.md` was thinned back toward a true
router, `mode-selection` no longer duplicates the shape taxonomy,
`execution-shapes` remains the single decision leaf for shape choice,
and evaluation is now conditional instead of part of the default
authoring path.
---------
Co-authored-by: Codex <codex@openai.com>
Clarify that `pr-writer` uses the same PR-body structure when updating
an existing PR as it does when creating one.
The skill now tells agents to rewrite the final body into that structure
instead of appending delta-only notes or leaving repo-template
scaffolding in place.
**Update Flow**
The `gh api` examples for updating a PR now use the same multiline body
pattern as `gh pr create`, so the command path reinforces the template
instead of bypassing it.
Co-authored-by: Codex <codex@openai.com>
Update pr-writer to prefer concise PR descriptions with optional
emphasis blocks instead of default section-heavy bodies.
**PR Body Shape**
The default template is now a short summary, with optional bold emphasis
blocks only when reviewers need scannable detail. Before/after examples
are split into a separate pattern and reserved for changes where direct
comparison is the clearest explanation, such as schemas, JSON, config,
CLI output, or event payloads.
**Maintenance Contract**
Add a SPEC file for pr-writer that captures the intended scope, source
evidence, evaluation gates, and known failure modes so future edits
preserve the concise style.
Co-authored-by: Codex <codex@openai.com>
Add a root-level SPEC.md convention for skills and reverse engineer the
canonical skill-writer spec as the reference implementation.
This updates skill-writer so future skill changes separate runtime
instructions from maintenance context: SKILL.md stays focused on
activation and workflow, while SPEC.md captures intent, scope,
source/evidence models, evaluation expectations, known limitations, and
maintenance rules. It also adds focused guidance for reference
architecture, source discovery, and persistent iteration evidence.
The validator now checks SPEC.md structure when present and warns on
long reference files instead of enforcing fixed integration reference
filenames. That keeps coverage requirements while allowing
skill-specific reference names.
Validation: uv run skills/skill-writer/scripts/quick_validate.py
skills/skill-writer --skill-class skill-authoring --strict-depth
Co-authored-by: Codex <codex@openai.com>
Analyzes Sentry session replays to surface UX patterns, pain points, and user journeys for a given product area. Includes structured output template, product area URL mapping, and error classification methodology.
Remove named cross-skill invocations from the `commit` and `pr-writer`
skills, and add an Independence principle to
`skill-writer/references/design-principles.md` so future skills are
authored the same way.
**Why.** Skills that name another skill in their runtime instructions
silently break in three ways: the named skill may not be installed, it
may be renamed, or it may be overridden by a user's own skill of the
same name. `commit` pointed at `create-branch`; `pr-writer` pointed at
`sentry-skills:commit`. Both now state the intent directly and trust
skill discovery to pick up whatever matches.
**Scope of the principle.** The rule targets *runtime dependency*:
agent-facing instructions and loaded resources must not assume another
skill is present. Non-runtime mentions — provenance logs, audit
allowlists, human-facing eval prompts — are fine.
`claude-settings-audit` enumerates every skill name because that is its
job, and `prompt-optimizer/SOURCES.md` cites `skill-writer` as a
synthesis source; both are intentional exceptions carved out in the
principle's text.
**What changed.**
- `skills/commit/SKILL.md` — drop `create-branch` references; keep the
"branch off main/master first" requirement inline.
- `skills/pr-writer/SKILL.md` — drop `sentry-skills:commit` references;
keep the "commit first" requirement inline.
- `skills/skill-writer/references/design-principles.md` — add an
Independence section with do/don't examples and the runtime-scope
carve-out.
- `skills/skill-writer/EVAL.md` — remove the
`sentry-skills:skill-writer` self-reference from the sample eval prompt.
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Close three open enhancement issues on the `prompt-optimizer` skill by
filling
gaps where the skill was either silent or actively nudging authors
toward
weaker patterns. All edits land in the existing skill structure — no new
workflow steps, no new reference files.
## What changed
**#120 — tool policy vs. native tool disclosure**
- Renamed the `<tools>` marker to `<tool_policy>` in the portable
skeleton,
Example 1, and the canonical "good section names" list.
- Added a note in `core-patterns.md` and one line per provider section
in
`model-family-notes.md` clarifying that tool schemas are disclosed via
the
provider-native `tools` parameter (Anthropic, OpenAI, Gemini) — the
prompt
should carry policy, not schema restatements.
- Tightened the "Layer the prompt correctly" long-prompt bullet to
match.
**#121 — layered prompts with multiple owners**
- New `### Layered prompts with multiple owners` subsection in
`core-patterns.md` covering the platform-layer vs.
deployer-persona-layer
split (`SOUL.md`, `CLAUDE.md`, `AGENTS.md`).
- The invariant: the deployer layer is voice-only; platform behavior
rules
must still fire if the deployer layer is empty or sparse.
- Cross-reference added from `SKILL.md` Step 3.
**#122 — directives in descriptive markers**
- New `### Where rules live` subsection in `core-patterns.md` noting
that
descriptive markers (`<context>`, `<state>`, `<turn-state>`,
`<environment>`) read as data and state-conditional directives buried
in them can underperform the same directive in a canonical rules section
(`<behavior>`, `<constraints>`, `<tool_policy>`, `<workflow>`).
- New bullet in "High-value prompt moves".
- New `## Example 4` in `transformed-examples.md` with the resume-notice
before/after (0.5 → ≥0.75 on the relevant eval with no other change).
## Why
Each issue came with a concrete field finding. The skill was either
silent
on the topic (#121 layered prompts, #122 rule placement) or actively
nudging
authors toward the weaker pattern (#120 enumerating tools in the
prompt).
The edits keep the skill's "empirical finding → rule" voice and stay
inside
the existing file structure.
## Prior art consulted
Rather than rely purely on the field observations in the issues, I
checked
authoritative sources for each claim:
- [Anthropic tool-use
docs](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview):
"When you call the Claude API with the tools parameter, the API
constructs
a special system prompt from the tool definitions, tool configuration,
and
any user-specified system prompt" — schemas are injected automatically.
- [pi-agent-core](https://github.com/badlogic/pi-mono)
`packages/agent/src/agent-loop.ts`:
LLM is invoked with `llmContext = { systemPrompt, messages, tools }` —
tools
are a distinct native parameter alongside prompt text.
- [OpenAI Codex CLI system
prompt](https://github.com/openai/codex/blob/main/codex-rs/core/gpt-5.1-codex-max_prompt.md):
references tools contextually as policy ("prefer `rg` for searching")
and
does not restate schemas.
- [Hermes Agent
SOUL.md](https://hermes-agent.nousresearch.com/docs/user-guide/features/personality)
and [soul-md.xyz](https://www.soul-md.xyz/): direct industry prior art
for
the platform + persona layering model (SOUL.md for voice, AGENTS.md for
project, platform defaults code-level). Hermes explicitly falls back to
a
built-in default identity when SOUL.md is empty — the pattern the skill
now documents.
Notably, Codex and Claude Code system prompts both do embed directives
in
descriptive sections in places, so the #122 guidance is scoped to
state-conditional rules where the author's eval showed a measurable gap,
not an absolute rule against context-section prose.
Fixes#120Fixes#121Fixes#122
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Analyzes Sentry session replays to surface UX patterns, pain points,
and user journeys for a given product area. Includes structured
output template, product area URL mapping, and error classification
methodology.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extract the iterate-pr monitor loop into a bundled script and update the
skill docs to point at that script instead of embedding the polling
behavior inline.
This follow-up also fixes `skill-writer`'s path guidance. The repo
already standardizes on `${CLAUDE_SKILL_ROOT}` for bundled skill assets,
so `skill-writer` should preserve that prior art instead of treating it
as invalid by default.
Keeping the monitor behavior in `scripts/monitor_pr_checks.py` makes the
CI-wait logic easier to maintain and keeps the Claude-only `MonitorTool`
guidance tied to repo-shipped behavior instead of a markdown shell
snippet.
Validated with `uv run skills/iterate-pr/scripts/monitor_pr_checks.py
--help`, `uv run skills/skill-writer/scripts/quick_validate.py
skills/iterate-pr --skill-class workflow-process --strict-depth`, and
`uv run skills/skill-writer/scripts/quick_validate.py
skills/skill-writer --skill-class skill-authoring --strict-depth`.
---------
Co-authored-by: OpenAI Codex <noreply@openai.com>
hello! full transparency: this is a claude-authored pr. i'm hopping in
on the description just to say hi.
i have my own personal skill, very similar to this one, for monitoring
PRs. i just updated mine to use the new Monitor tool in claude code, and
thought i'd propose such a change here
my impression was this skill is claude specific, so it's fine to call
out a specific claude code tool like `MonitorTool` in the skill itself
([docs](https://code.claude.com/docs/en/tools-reference#monitor-tool))
without ado, the pr description from claude:
***
Replace the `sleep 30` polling loop in step 7 with MonitorTool guidance.
The MonitorTool runs a background script that streams stdout lines as
notifications, avoiding burning context on repeated sleep/poll cycles.
- Add concrete polling script with transient error handling
- References 'MonitorTool' for explicit tool discovery
- Link to docs:
https://code.claude.com/docs/en/tools-reference#monitor-tool
- Link to CC pm's announce-tweet:
https://x.com/noahzweben/status/2042332268450963774?s=20
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: David Cramer <dcramer@gmail.com>
Co-authored-by: OpenAI Codex <noreply@openai.com>
Make repo-root `skills/` and `agents/` the canonical source for the
`sentry-skills` plugin by loading the plugin from repo root instead of
from `plugins/sentry-skills`.
The earlier refactor moved the tree to top level, but leaving a
plugin-local `skills` symlink still created a loader risk for
marketplace installs. This removes that dependency entirely: the
marketplace entry now points at `./`, the root plugin manifest uses
repo-root `skills/` and `agents/`, and the old plugin-local `skills`
path goes away.
This pass also tightens the repo guidance around standard skill
locations. `skill-writer` goes back to using `.agents/skills` as its
default local target, `skill-writer` and `skill-scanner` now explicitly
recognize canonical `skills/<name>/` roots, and the repo docs and
registrations are updated to match the new layout, including
`presentation-creator`.
I validated the change with strict-depth validation for `skill-writer`
and `skill-scanner`, plus a local Claude marketplace add/install smoke
test that produced real `skills/` and `agents/` directories in the
installed plugin cache without any plugin-local `skills` symlink.
---------
Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <codex@openai.com>
Add a new canonical `prompt-optimizer` skill for creating and refining
agent prompts, system prompts, and reusable prompt templates.
This packages the current prompt guidance we found across OpenAI,
Anthropic, and Gemini into one workflow-oriented skill instead of a
loose collection of tips. The skill covers prompt contracts,
model-family adapters, marker discipline, eval-driven iteration,
and transformed examples.
The later update tightened the skill around prompt compaction and
clarity. It now has an explicit prompt-learnings pass for removing
low-value prompt text, collapsing duplicated instructions, separating
policy from evidence, and ordering long-context inputs deliberately.
The supporting `SOURCES.md` records the local `skill-writer` basis,
provider docs, and prompt-optimization research used to shape the
workflow. The PR also registers the new skill in the public README,
project settings, and the `claude-settings-audit` allowlist.
Add a new `typing-exclusion-worker` skill and register it for discovery.
This workflow is intended to be reused across Python repositories such
as
`sentry` and `getsentry` where teams remove modules from mypy exclusion
overrides in `pyproject.toml` and need a consistent fix-and-validate
loop.
I considered including Python directly in the skill name, but kept the
broader
`typing-exclusion-worker` name and moved Python to the front of the
description instead. That keeps naming flexible while making trigger
matching
for Python workflows explicit.
The skill is registered in the public skills inventory and allowlists so
agents
can discover and invoke it reliably.
Move Python to the front of the typing-exclusion-worker description so
trigger matching is clearer for Python repos and the README wording stays in
sync with the skill metadata.
Co-Authored-By: Codex 5.3 <codex@openai.com>
Made-with: Cursor
Add the typing-exclusion-worker skill to the canonical skills tree and register
it so agents can discover and use it consistently across repos with pyproject-
based mypy configuration.
Co-Authored-By: Codex 5.3 <codex@openai.com>
Made-with: Cursor
## Summary
Adds two new sections to the blog writing skill based on editorial
feedback from Greg Kumparak and SEO learnings from the agent monitoring
blog posts.
### Formatting for Skimmability
- Break paragraphs at contrast/pivot points (when sentence shifts to
"but"/"however")
- One idea per paragraph, shorter is better for online reading
- No em dashes in blog formatting
- Good/bad example showing the line break pattern
### SEO for Developer Content
- Lead generic (tool-agnostic educational content), close specific
(product as example)
- Put target keywords in H2 headings
- Include definitional "What is X?" sections for head terms
- Add FAQ for long-tail keyword targeting
These came from a real editing session where Greg reviewed two Sentry
blog drafts and identified consistent patterns around paragraph breaks
at contrast points and skimmability. The SEO section came from an Ahrefs
content analysis where we found competitors outranking us by leading
with tool-agnostic content.
🤖 Generated with [Claude Code](https://claude.com/claude-code)