Commit Graph

237 Commits

Author SHA1 Message Date
Simon Hellmayr 04b9df930f feat(flowchart-maker): Add flowchart-maker skill
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
2026-09-07 15:52:41 +02:00
David Cramer c2f99a5b04 fix(iterate-pr): Remove default Claude attribution (#169) 2026-08-25 07:33:48 -07:00
Arsalan Bashir aaa8515200 fix(iterate-pr): Remove default Claude attribution 2026-08-24 16:02:03 -07:00
Matt Duncan 6abccd60c7 chore(skills): Remove replay-ux-research (#167)
This skill has gotten outdated, remove for now until it makes sense to
improve it since it is occasionally invoked unnecessarily.
2026-08-19 11:41:26 -07:00
Matt Duncan 10e64d1116 fix(skills): Remove reference 2026-08-19 11:38:25 -07:00
Matt Duncan 6e790d8083 chore(skills): Remove replay-ux-research
This skill has gotten outdated, remove for now until it makes sense to
improve it since it is occasionally invoked unnecessarily.
2026-08-19 11:33:31 -07:00
Greg Pstrucha 24fdb833b9 fix(gha-security-review): Pin third-party actions only (#166) 2026-08-08 08:33:09 +02:00
sentry-junior[bot] 7e127fe8a5 fix(gha-security-review): Pin third-party actions only
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>
2026-08-08 06:26:51 +00:00
sentry-junior[bot] e7a87fa726 feat(iterate-pr): Enable model invocation (#163)
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>
2026-07-25 08:44:40 -07:00
sentry-junior[bot] 9a85b59acc ci: Remove local warden workflow (#161)
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>
2026-07-21 08:52:22 -07:00
David Cramer 412f2368ee ref(skills): Streamline commit and PR writing guidance (#160)
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.
2026-07-15 14:24:30 -07:00
David Cramer 5a64b36c62 feat(skills): Add AXIS skill evals (#159)
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>
2026-06-30 13:52:17 -07:00
David Cramer 89a1f0105c docs(pr-writer): Improve PR description guidance (#158)
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>
2026-06-22 14:39:14 -07:00
David Cramer b39c7c4b60 docs(pr-writer): Favor natural PR descriptions (#154)
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>
2026-06-08 13:53:05 -07:00
Charlie Luo 493bb49084 feat(document-api-endpoint): add skill for documenting API endpoints (#153)
Finishing up
https://linear.app/getsentry/project/api-docs-for-agents-c7863fd8bbe0/overview,
consolidate some of the major lessons into a skill.
2026-06-04 14:26:09 -04:00
Charlie Luo 0c583f55f0 feat(document-api-endpoint): add skill for documenting and typing Sentry API endpoints
Co-authored-by: Claude <noreply@anthropic.com>
2026-06-04 11:16:51 -07:00
Matt Duncan b10e2db21d feat(triage-frontend-issues): Add archive-only triage skill for sentry/javascript (#151)
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.
2026-05-21 14:42:28 -07:00
Matt Duncan 4b7b1adc8f fix(triage-frontend-issues): Resolve cursor bot feedback on PR #151
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>
2026-05-21 09:41:59 -07:00
Matt Duncan d53ca049be feat(triage-frontend-issues): Add archive-only triage skill for sentry/javascript
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>
2026-05-21 09:21:04 -07:00
Neel Shah 10d8a76562 feat(pr-link-issue): add skill to link GitHub issues + Linear tickets on PRs (#150)
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)
2026-05-21 16:01:03 +02:00
sentry-junior[bot] ccf58b1dc6 fix(pr-link-issue): make Linear key regex case-insensitive
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>
2026-05-21 13:54:53 +00:00
sentry-junior[bot] 9a63387960 feat(pr-link-issue): add skill to link GitHub issues + Linear tickets on PRs
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>
2026-05-21 13:48:36 +00:00
David Cramer 32fdf36273 fix(iterate-pr): Stop waiting on review gates (#149)
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>
2026-05-19 14:35:02 -07:00
NinjaLikesCheez c41ee49b37 fix(create-branch): Align branch naming with Sentry SDK standards (#144) 2026-05-18 15:39:47 +02:00
sentry-junior[bot] 58c611d2b0 fix(pr-writer): prevent hallucinated placeholder issue references (#148)
Prevent hallucinated placeholder issue references like `Closes
https://github.com/getsentry/sentry/issues/XXXXX` (observed in
[getsentry/sentry#115461](https://github.com/getsentry/sentry/pull/115461)).

- **Step 5**: tighten issue-ref rule — require exact ID from trusted
context, omit otherwise
- **Step 6**: add pre-submit gate — strip unverified refs, block
placeholder IDs
- **Issue References section**: label example IDs as non-copyable

Fixes getsentry/junior#343

Co-authored-by: Junior[bot] <junior@sentry.io>
2026-05-14 09:26:49 -07:00
sentry-junior[bot] c813735834 fix: replace ${CLAUDE_SKILL_ROOT} with skill-root-relative paths (#146)
## 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>
2026-05-09 10:46:26 -07:00
NinjaLikesCheez 884f073eed fix(create-branch): Align branch naming with Sentry SDK standards
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 15:31:46 +02:00
David Cramer 89aaec068a docs(skill-writer): Simplify generator guidance (#142)
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>
2026-05-04 18:25:48 -07:00
David Cramer d7a020acb2 fix(pr-writer): Reject bracketed PR title prefixes (#141)
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>
2026-05-04 11:05:36 -07:00
David Cramer c190d369bc docs(skills): Improve agent guidance skills (#140)
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>
2026-05-04 10:40:37 -07:00
David Cramer 0493d77a55 fix(pr-writer): Refresh open PRs after material changes (#138)
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>
2026-05-01 13:26:04 -07:00
David Cramer 9fcbd4d239 ref(skill-writer): Route references by lookup need (#137)
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>
2026-05-01 12:38:53 -07:00
David Cramer f2cff985bc fix(pr-writer): Reuse the PR template for updates (#136)
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>
2026-04-29 16:31:18 -07:00
David Cramer 716f0e6353 docs(pr-writer): Tighten PR body guidance (#133)
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>
2026-04-27 15:05:09 -07:00
David Cramer 5cfc9e22a9 feat(skill-writer): Add skill specs and evidence guidance (#128)
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>
2026-04-26 10:24:30 -07:00
Matt Duncan a2366b16ba feat(skills): add replay-ux-research skill (#126)
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.
2026-04-24 16:01:07 -07:00
David Cramer 0a38bc1f18 ref(skills): Enforce skill independence (#127)
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>
2026-04-24 12:51:26 -07:00
David Cramer 6a844a09d7 docs(prompt-optimizer): fill in three guidance gaps (#120, #121, #122) (#123)
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 #120
Fixes #121
Fixes #122

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 12:00:34 -07:00
Matt Duncan 9fbdbba6e0 fix(replay-ux-research): update product areas to match current nav
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 11:55:16 -07:00
Matt Duncan 8f7a516e94 feat(skills): add replay-ux-research skill
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>
2026-04-24 11:43:15 -07:00
David Cramer 94ea2a26c7 fix(iterate-pr): extract monitor script (#118)
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>
2026-04-19 18:09:23 -07:00
Brett Beutell 14318cb5f2 feat(iterate-pr): replace sleep polling with MonitorTool (#113)
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>
2026-04-19 16:45:18 -07:00
David Cramer 24361e7958 ref(skills): Load sentry-skills plugin from repo root (#117)
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>
2026-04-19 16:10:08 -07:00
David Cramer 04f1e83017 feat(skills): Add prompt optimizer skill (#116)
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.
2026-04-19 14:31:15 -07:00
Armen Zambrano G. 51b02380c7 feat(skills): add typing-exclusion-worker skill (#114)
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.
2026-04-17 07:48:21 -04:00
Armen Zambrano G. e2611679a7 ref(skills): clarify python-first typing worker description
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
2026-04-17 07:16:28 -04:00
Charlie Luo 19bcf87897 fix(skills): warn against leaking customer data (#115)
Add a warning about leaking customer names / data to commit and
pr-writer
2026-04-16 16:35:53 -04:00
Charlie Luo ff7f79d479 docs(commit,pr-writer): warn against leaking customer data
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-16 13:32:36 -07:00
Armen Zambrano G. be786ba5be feat(skills): add typing-exclusion-worker skill registration
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
2026-04-16 15:31:35 -04:00
Rahul Chhabria 0dbe7ec59d feat(blog-writing-guide): add skimmability and SEO guidance (#109)
## 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)
2026-04-14 06:33:54 -07:00