Commit Graph

124 Commits

Author SHA1 Message Date
Priscila Oliveira 9ff0c477b8 fix(create-branch): stop asking users to confirm branch name
Users reported the skill keeps asking them to approve the branch name.
Strengthen the non-interactive language so the agent generates the name
and moves on without pausing for confirmation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 08:44:32 +01:00
David Cramer d2541c0e5f ref(skill-writer): make path guidance portable (#103)
Clarify how skill-writer should handle bundled file paths and
registration paths so generated skills stay portable across hosts.

This updates the authoring and validation guidance to prefer
skill-root-relative references like references/... and scripts/...,
avoid provider-specific path variables in generic skills, and keep
repository registration steps tied to the active workspace layout.

It also does a self-pass on skill-writer so the portability rule lives
in the design, authoring, and validation references instead of expanding
the top-level orchestration flow.

---------

Co-authored-by: Codex <codex@openai.com>
2026-03-19 15:38:26 -07:00
David Cramer 625f50fa10 ref(skills): simplify create-branch workflow (#104)
Make `create-branch` derive and create branch names without prompting
for user input.

This trims the skill down to the core naming and checkout workflow so it
uses fewer tokens while still documenting the fallback rules for prefix
resolution, base selection, and collision handling.

It also updates `commit` to treat `create-branch` as a non-interactive
helper so branch creation no longer blocks PR creation or commit flows.

Co-authored-by: OpenAI Codex <noreply@openai.com>
2026-03-19 15:34:18 -07:00
Greg Pstrucha 0b8707a0f7 feat(skill-scanner): Add detection for 7 new attack vectors (#102)
Add detection for attack vectors discovered through systematic
benchmarking
of 10 malicious skill patterns across 14 LLM models
(https://github.com/gricha/dangerous-skills).

New detections in `scan_skill.py`:
- **Symlinks** pointing outside skill directory (e.g.,
`examples/id_rsa.example` → `~/.ssh/id_rsa`) — critical
- **YAML frontmatter hooks** (`PostToolUse`, etc.) that execute shell
commands automatically — critical
- **`!`command`` pre-prompt injection** that runs at template expansion
before the model sees the prompt — high
- **Test file auto-discovery** (`conftest.py`, `test_*.py`, `*.test.js`)
that execute as side effects of `pytest`/`npm test` — high
- **npm lifecycle hooks** (`postinstall`) in bundled `package.json`
files — critical
- **PNG metadata text injection** (tEXt/iTXt chunks with hidden
instructions) — high
- **Unicode Tag character smuggling** (U+E0000 block, invisible to
humans but read by LLMs) — critical

Updated `SKILL.md` Phase 5 behavioral analysis with structural attack
checklist.
Updated reference files with new pattern documentation.

Tested against all 10 skills in the dangerous-skills repo — every attack
vector is detected.


Agent transcript:
https://claudescope.sentry.dev/share/KrNBlA9AEa20a0jWE4qxfVvJWVmp7ytU94Rs7fRFdfM
2026-03-19 15:28:38 -07:00
Greg Pstrucha f67153cb7d fix(skill-scanner): Parse iTXt chunks correctly, handle null scripts
- iTXt chunks have 5 null-separated fields (keyword, comprFlag,
  comprMethod, langTag, transKeyword, text) — parse all 5 instead
  of treating like tEXt (which has only 2).
- Handle package.json where "scripts" is null instead of missing.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-19 13:34:59 -07:00
Greg Pstrucha 9bc93e3b9a fix(skill-scanner): Address review bot feedback
- Fix PNG scanner: parse chunk boundaries properly instead of naive
  byte search. Prevents false positives from compressed image data.
- Fix symlink check: use Path.is_relative_to() instead of unsafe
  string startswith comparison.
- Fix package.json read: add encoding param and ValueError to except
  clause to handle non-UTF-8 files gracefully.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-19 13:20:10 -07:00
Greg Pstrucha 22fa945976 feat(skill-scanner): Add detection for 7 new attack vectors
Based on findings from https://github.com/gricha/dangerous-skills
benchmarking 10 malicious skill patterns across 14 models.

New detections in scan_skill.py:
- Symlinks pointing outside skill directory (critical)
- YAML frontmatter hooks that execute shell commands (critical)
- !`command` pre-prompt injection syntax (high)
- Test file auto-discovery (conftest.py, test_*.py, *.test.js) (high)
- npm lifecycle hooks (postinstall) in bundled packages (critical)
- PNG metadata text injection (tEXt/iTXt chunks) (high)
- Unicode Tag character smuggling (U+E0000 block) (critical)

Updated SKILL.md Phase 5 behavioral analysis with structural attack
checklist. Updated reference files with new pattern documentation.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-19 11:39:56 -07:00
Ivan Dlugos 2e50d65724 fix(iterate-pr): Prevent sleep backoff in CI polling loop (#99)
## Summary
- Adds explicit instruction not to increase sleep duration on subsequent
polling iterations

## Why
The agent sometimes applies exponential backoff to the 30-second sleep
in the polling loop (30s → 60s → 120s → ...), turning a ~5 minute CI
wait into 10+ minutes of idle time. The fixed 30s interval is already
appropriate — CI checks don't benefit from longer gaps between polls.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-03-18 20:35:26 +01:00
Jeremy Stanley 67436033a7 fix(skills): declare uv as a requirement in skills that use it (#96)
Without a specific callout for uv, agents waste time searching for uv
when it's missing instead of guiding users to install it. Add a
**Requires** directive with the uv install URL to gh-review-requests,
iterate-pr, skill-scanner, and skill-writer so the agent can surface the
issue to the end user. This mirrors the **Requires** directive for the
`gh` CLI with auth.

Resolves getsentry/skills#93
2026-03-18 11:07:05 -07:00
Ivan Dlugos c70d9501f9 fix(iterate-pr): Escape thread IDs in GraphQL mutation
Escape pullRequestReviewThreadId with JSON string encoding when building the batched mutation.

This prevents malformed IDs from breaking out of the GraphQL string literal while preserving existing behavior for valid thread IDs.

Co-Authored-By: GitHub Copilot <noreply@github.com>
2026-03-18 15:53:44 +01:00
Ivan Dlugos a127a525ea fix(iterate-pr): Handle duplicate thread replies and newlines
Preserve per-operation results in reply_to_thread so repeated thread IDs do not overwrite earlier outcomes in the summary output.

Normalize literal \n sequences in reply bodies and update skill examples to use shell quoting that produces real newlines, preventing escaped newline text in posted replies.

Co-Authored-By: GitHub Copilot <noreply@github.com>
2026-03-18 15:43:49 +01:00
Ivan Dlugos 85a85559ee fix(iterate-pr): parse GraphQL response body for per-alias errors
The reply_to_thread.py script only checked subprocess returncode,
missing application-level GraphQL errors returned with HTTP 200.
Now parses the response body to detect partial failures per alias.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 15:21:39 +01:00
Ivan Dlugos 8567c413c7 fix(iterate-pr): Prevent sleep backoff in CI polling loop
Explicitly instruct the agent not to increase the sleep duration on
subsequent polling iterations. Without this, the agent sometimes
applies exponential backoff (30s → 60s → 120s…) which wastes time
when CI runs are typically ~5 minutes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 13:49:26 +01:00
Ivan Dlugos 501fcdef20 feat(iterate-pr): Add reply_to_thread.py script for PR thread replies
Wraps the GraphQL addPullRequestReviewThreadReply mutation in a
script so it can be whitelisted as a permission instead of requiring
raw gh api graphql approval each time. Supports batching multiple
replies into a single call.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 13:44:41 +01:00
Jakob Heuser c82c72f063 fix: declare uv as a requirement in skills that use it
Without a specific callout for uv, agents waste time searching for
uv when it's missing instead of guiding users to install it. Add a
**Requires** directive with the uv install URL to gh-review-requests,
iterate-pr, skill-scanner, and skill-writer so the agent can surface
the issue to the end user.

Resolves getsentry/skills#93
2026-03-17 23:50:08 -07:00
Simon Hellmayr a0f641c0c3 feat(presentation-creator): don't create graphs without data 2026-03-11 15:29:20 +01:00
Neel Shah 66040dc448 senpai agent poc (ai hackweek) (#45)
best used as following for full output
```
claude --agent sentry-skills:senpai
explain relay's role in sentry's infrastructure
```
or like this which delegates to subagent but does an extra step of
unnecessary summarizing
```
ask senpai to explain relay's role in sentry's infrastructure
```

outputs below are single question, agent invokations
2026-03-10 12:44:50 +01:00
Simon Hellmayr 592e1fb85b adapt design system 2026-03-09 13:39:17 +01:00
Simon Hellmayr 0402ad9991 feat: add presentation creator skill 2026-03-09 13:14:12 +01:00
David Cramer 360070a6ed docs(skills): Align attribution placeholder with agent identity (#85)
Align commit attribution wording to require the agent's name and
attribution byline everywhere this guidance appears.

This updates AGENTS.md, the agents-md skill, and the commit skill so
they consistently use the same placeholder format and avoid the older
'agent model' phrasing.

It also strengthens the commit skill with explicit guidance to avoid
literal \n sequences in commit messages and to use properly formatted
multiline commit bodies.

Co-authored-by: GPT-5 Codex <noreply@openai.com>
2026-03-06 10:09:56 -08:00
David Cramer 3b816eae84 feat(skills): Merge synthesis workflow into skill-writer (#84)
Merge skill synthesis into `skill-writer` so there is one canonical flow
for creating and improving skills.

**Canonical workflow consolidation**
`skill-writer` now owns synthesis, authoring, iteration, evaluation, and
registration in one path. This removes split ownership between creation
and synthesis and makes outcomes more consistent.

**`skill-creator` compatibility behavior**
`skill-creator` is now an alias entrypoint rather than a separate
framework. Existing prompts still work, but execution routes to the
canonical `skill-writer` behavior.

**Input-depth and coverage gates**
The workflow now explicitly prioritizes broad source collection before
authoring. It adds coverage/depth gates to reduce shallow skills and
force clearer gap handling.

**Provenance and iteration tracking**
Skill synthesis now records sources and change history in `SOURCES.md`
instead of adding heavy attribution blocks in `SKILL.md`. This improves
traceability and makes iterative updates easier to audit.

**Case-study guidance quality**
Reference examples were upgraded from generic guidance to case-study
style patterns with concrete source-to-decision framing. This is
intended to improve synthesis quality for future skills.

**Cross-agent execution consistency**
Guidance was normalized to be generic across Claude and Codex, with
script execution clarified around `uv run` and skill-directory script
paths. This keeps the workflow portable while staying operationally
concrete.

---------

Co-authored-by: GPT-5 Codex <noreply@openai.com>
2026-03-05 14:26:17 -08:00
David Cramer fe1dd4f1d4 docs(skills): List all skills and align registration/allowlists (#80)
* docs: list all available skills

* docs(skills): Align registration guidance and skill allowlists

Require alphabetical ordering when updating the Available Skills table\nin contributor guidance and skill creation workflow docs.\n\nSynchronize skill allowlists with the actual sentry-skills directory so\nautomatic skill injection guidance reflects all available skills.\n\nCo-Authored-By: GPT-5 Codex <noreply@openai.com>

---------

Co-authored-by: shuofengzhang <sofuncheung16@gmail.com>
2026-03-04 10:44:54 -08:00
David Cramer 942b2c1421 ref(skills): Promote pr-writer and skill-writer as canonical names (#79)
* ref(skills): Rename PR and skill authoring workflows

Promote pr-writer and skill-writer as canonical skill names while\nkeeping create-pr and skill-creator as compatibility aliases.\n\nUpdate skill registration, settings allowlists, and documentation\nreferences to prefer canonical names.\n\nExtend skill-writer guidance with capability-first naming practices\nand examples for clearer skill discovery.

Co-Authored-By: GPT-5 Codex <noreply@openai.com>

* fix(skills): Address review bot feedback on skill rename

Restrict skill-writer with an explicit allowed-tools frontmatter field,\nremove dead code in quick_validate, and delete orphaned duplicate\nreferences/scripts from the skill-creator alias directory to avoid drift.

Co-Authored-By: GPT-5 Codex <noreply@openai.com>

* fix(skills): Drop allowed-tools from skill-writer

Keep skill-writer frontmatter compatible across clients by avoiding\nthe optional allowed-tools field while retaining the other review\nfixes in this PR.

Co-Authored-By: GPT-5 Codex <noreply@openai.com>

* docs(skill-writer): Default to omitting allowed-tools

Clarify that skill authoring should avoid allowed-tools unless a user\nexplicitly requests strict tool scoping or repo policy requires it,\nsince allowlist syntax differs across clients.

Co-Authored-By: GPT-5 Codex <noreply@openai.com>

* docs(pr-writer): Include update flows in skill discovery text

Expand pr-writer trigger language to explicitly cover updating PR artifacts\nlike title and description, not only creating a new PR.\n\nAlso align the README skill table description so repository docs\nmatch the canonical skill wording.

Co-Authored-By: GPT-5 Codex <noreply@openai.com>

---------

Co-authored-by: GPT-5 Codex <noreply@openai.com>
2026-03-04 10:03:08 -08:00
Priscila Oliveira df1bc00121 fix(create-branch): Use GitHub username instead of git user.name
Replace git config user.name lookup with gh api user --jq .login so the
branch prefix always matches the user's actual GitHub handle.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-04 10:38:03 +01:00
Priscila Oliveira bcb0cf99cc fix(claude-settings-audit): Add missing comma in skills allowlist
Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-04 10:12:59 +01:00
Priscila Oliveira 7392bd44d9 feat(skills): Add gha-security-review skill
Add a new skill for reviewing GitHub Actions workflows for security
vulnerabilities, covering expression injection, pwn requests, supply
chain attacks, credential escalation, and AI prompt injection via CI.

Includes reference documentation for all major GHA attack vectors.
Also updates AGENTS.md to the concise agent-instructions format and
registers the new skill in settings and the claude-settings-audit allowlist.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-04 10:08:27 +01:00
David Cramer ef33bb5032 ref(agents-md): Improve skill with research-backed best practices (#77)
Replace skill-discovery focus with project-analysis approach. Add line
budget guidance (target 60, max 100), file-scoped commands section,
and anti-patterns for linter duplication. Remove Local Skills required
section since agents discover skills automatically. Rewrite AGENTS.md
for this repo to follow the updated guidance.

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-03 15:04:21 -08:00
Greg Pstrucha 1f1b3bbdbb ref(gha-security-review): Tighten skill by removing redundancy and aligning with Warden patterns
Reduce SKILL.md from 446 to 186 lines (58%) by removing content that
was duplicated across sections or controlled by Warden. Modeled after
the sentry-security skill structure (Step 1-4 pattern).

Removed: Phase 1 (file discovery, Warden provides files), Phase 2
(duplicate of Reference Files table), Phase 4 (duplicate of Core
Principles), Phase 5 (duplicate of validation section), Quick Patterns
Reference (duplicates safe patterns table + reference files),
Attacker-Controlled Expressions table (moved to reference file),
standalone Severity Model (replaced with confidence model), and ~10
inline repetitions of the external attacker concept.

Added confidence model (HIGH/MEDIUM/LOW) matching sentry-security
pattern. Moved attacker-controlled expressions quick reference table
to references/expression-injection.md where it belongs.

Co-Authored-By: Claude <noreply@anthropic.com>

Agent transcript: https://claudescope.sentry.dev/share/spByNq2HxKsjIIoMtNrC7sncSkRu68d6dqVVv7xZ4k0
2026-03-02 19:21:36 -08:00
Greg Pstrucha b94082112d fix(gha-security-review): Add external attacker threat model and validation requirements
Refine the skill to reduce false positives:

- Add "external attacker threat model" principle: only report vulns
  exploitable without write access. workflow_dispatch input injection,
  push-to-protected-branch expression injection, and schedule-only
  secrets are not findings.
- Add "validate before reporting" principle: require reading the actual
  workflow YAML and tracing every link in the attack chain before
  reporting. Pattern matching alone is not enough.
- Expand Phase 5 into a structured validation gauntlet (prove attack
  path, check mitigations, confirm impact) with a table of checks
  that must pass before a finding is reported.
- Move workflow_dispatch inputs and commit messages on push to the
  "safe expressions" table with rationale.
- Add "Do NOT Flag" and "Not a finding" sections to quick patterns
  and severity model.
- Update expression-injection.md to mark workflow_dispatch as not a
  finding and add nuance to commit message injection.

Co-Authored-By: Claude <noreply@anthropic.com>

Agent transcript: https://claudescope.sentry.dev/share/lxT27jHfwxvYtwFoKykzZV-XILSBNXhdMCKRNCjKvFY
2026-03-02 14:54:56 -08:00
Greg Pstrucha a4b1ed27b5 feat: Add gha-security-review skill for GitHub Actions exploitation analysis
Add a new skill focused on finding exploitable vulnerabilities in GitHub
Actions workflows. Every finding requires a concrete exploitation scenario
with entry point, payload, execution mechanism, and impact.

Covers 8 attack categories across 9 reference files:
- Pwn requests (pull_request_target + fork checkout)
- Expression injection (branch names, filenames, PR titles)
- Comment-triggered command execution without authorization
- Credential escalation (PAT theft, token scope)
- AI prompt injection via CI config poisoning
- Supply chain (unpinned actions, tag mutation)
- Permissions and secrets misconfiguration
- Runner infrastructure (self-hosted persistence, cache poisoning)

Real-world examples sourced from the HackerBot Claw campaign (2025)
targeting trivy, awesome-go, DataDog, Microsoft, and others.

Co-Authored-By: Claude <noreply@anthropic.com>

Agent transcript: https://claudescope.sentry.dev/share/p0B5R_KHz5RjhqQaQwZDvfNqfnufeAzBGX12pYkmW-k
2026-03-02 13:36:41 -08:00
Priscila Oliveira 607335e02f fix(create-branch): Simplify Step 5 and fix unconditional stash pop
Replace the complex stash state machine with concise, principle-based
instructions that trust the agent's judgment. Fixes the bug where
git stash pop ran unconditionally on checkout failure even when no
changes were stashed.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 12:00:39 +01:00
Priscila Oliveira bcc2c03c3e fix(create-branch): Prefer origin remote and restore stash on user abort
Detect the primary remote by preferring "origin" if it exists rather than
taking the first alphabetical remote. Also instruct the agent to restore
the stash if the user cancels at any point after stashing, preventing
changes from being silently left in the stash.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 11:50:44 +01:00
Priscila Oliveira e8d53e5f98 fix(create-branch): Restore stash on checkout and branch-creation failures
Add instructions to restore stashed changes if `git checkout <default-branch>`
fails or if `git checkout -b <branch-name>` fails, so the user's work is
never silently left in the stash when an error occurs.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 11:42:18 +01:00
Priscila Oliveira 952f8525dc fix(create-branch): Clarify branch collision handling always triggers regardless of stash
Reword the collision block to make it unambiguous that the user is always
asked to choose a different name when a collision is detected, whether or
not changes were stashed, preventing the agent from skipping the collision
path and attempting to create an already-existing branch.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 11:38:37 +01:00
Priscila Oliveira 3093a2a491 fix(create-branch): Prevent double stash pop after branch name collision
When a collision is detected and changes were stashed, restore the stash
and clear the stashed flag before returning to Step 4, so the final
restore step does not attempt a second stash pop on a new name attempt.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 11:33:21 +01:00
Priscila Oliveira 8ff57a49db fix(create-branch): Use dynamic remote name instead of hardcoded origin
Detect the primary remote via `git remote | head -1` and use it for
default-branch detection and remote branch existence checks, so repos
with a non-origin primary remote (e.g. upstream forks) work correctly.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 11:28:07 +01:00
Priscila Oliveira 6cf9557bfe fix(create-branch): Fix stash edge cases, abort flow, trailing newline, and commit re-check
- Strip trailing whitespace from default branch detection output
- Clarify abort path: stop skill if user aborts stash prompt
- Restore stash before informing user of branch name collision
- Add re-check in commit skill to verify branch changed before committing

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 11:17:12 +01:00
Priscila Oliveira bd466a3a83 fix(create-branch): Add remote branch collision check and clarify commit skill confirmation
- Check refs/remotes/origin/ in addition to refs/heads/ to detect remote branch collisions
- Clarify in commit skill that create-branch still proposes a name for confirmation;
  only the decision to create a branch at all is skipped

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 11:14:13 +01:00
Priscila Oliveira 838fc883e3 fix(create-branch): Restore stashed changes after branch creation
After switching to the default branch and creating a new branch,
run git stash pop to restore any changes that were stashed earlier
in the workflow.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 11:11:19 +01:00
Priscila Oliveira 8660627c1d fix(create-branch): Use refs/heads/ prefix for local branch existence check
Use git show-ref with refs/heads/ to only match local branches,
not remote branches or tags, before creating a new branch.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 11:08:43 +01:00
Priscila Oliveira 393c585941 fix(create-branch): Fix username transliteration, branch validation, and stash handling
- Clarify username sanitization to transliterate accented chars (é→e) before removing non-ASCII
- Add git-forbidden characters guidance for short-description
- Add uncommitted changes check with stash option before switching branches
- Add branch existence check before git checkout -b

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 11:03:51 +01:00
Priscila Oliveira fc48ab0f7e fix(create-branch): Fix diff commands, username sanitization, and branch heuristic
- Use git diff without --stat so agent reads actual content, not just filenames
- Strip non-ASCII characters from username prefix to ensure valid branch names
- Ask user when both main and master exist instead of blindly defaulting to main

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 10:57:55 +01:00
Priscila Oliveira d5e59626c6 fix(create-branch): Checkout default branch before creating new branch
When the user chooses to switch to the default branch first, the skill
was missing the git checkout step, causing the new branch to be created
from the wrong base.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 10:52:41 +01:00
Priscila Oliveira 957d8cbee8 fix(create-branch): Handle detached HEAD state
When git branch --show-current returns empty, detect the detached HEAD
and show the current commit, so the user understands their state before
choosing where to branch from.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 10:51:10 +01:00
Priscila Oliveira 62f5a8f0e8 fix(create-branch): Ask user for default branch when none found locally
When neither main nor master exists, defaulting to main would cause
git checkout to fail. Ask the user instead.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 10:50:41 +01:00
Priscila Oliveira c61c7aed9d fix(commit): Delegate branch creation to create-branch skill
Replace the inline branch naming logic with a reference to the
create-branch skill to ensure consistent naming conventions across both skills.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 10:49:40 +01:00
Priscila Oliveira 4a39e82ea3 fix(skills): Fix default branch detection in create-branch
Reorder Step 5 so the default branch is detected before it's used
in the non-default branch check. Replace the vague fallback with a
concrete `git branch --list main master` command, explicit precedence
rules (main > master > fallback to main), and add `git branch
--show-current` to retrieve the current branch name for the comparison.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 10:38:53 +01:00
Priscila Oliveira 63a69c7768 feat(skills): Add create-branch skill
Adds a new skill that creates git branches following Sentry naming
conventions. Detects the username from git config, inspects local
changes or prompts for context, classifies the work type, and
proposes a branch name before creating it.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-26 10:37:24 +01:00
Nico Hinderling 6089495c20 Merge pull request #69 from getsentry/nh/fix-fetch-pr-checks-json-flag
fix(iterate-pr): Parse tab-separated output in fetch_pr_checks
2026-02-25 15:15:12 -08:00
Nico Hinderling 67f0fa666f fix(iterate-pr): Remove check=True from subprocess.run in get_checks
gh pr checks exits non-zero when any check is failing or pending, so
check=True raises CalledProcessError and discards all check data.
Remove it to allow parsing output regardless of exit code.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-25 15:04:23 -08:00