From project-toolkit
Verifies if staged git files qualify for investigation-only QA skip per ADR-034 allowlist. Run test_investigation_eligibility.py before committing with 'SKIPPED investigation-only' verdict.
npx claudepluginhub rjmurillo/ai-agents --plugin project-toolkitThis skill uses the workspace's default tool permissions.
Skills for session management and protocol compliance.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Skills for session management and protocol compliance.
| Phrase | Action |
|---|---|
Check if I can skip QA | Run test_investigation_eligibility.py |
Am I eligible for investigation-only? | Verify staged files against ADR-034 allowlist |
Verify investigation session eligibility | Check QA skip eligibility before commit |
Can I use SKIPPED: investigation-only? | Validate investigation-only exemption |
Test eligibility for QA skip | Execute eligibility check script |
Use this skill when:
Use session-init instead when:
Use the qa agent instead when:
| Step | Action | Tool | Output |
|---|---|---|---|
| 1.1 | Stage files for commit | git add | Files added to staging area |
| 1.2 | Run eligibility check | test_investigation_eligibility.py | JSON with Eligible, StagedFiles, Violations |
| 1.3 | Verify Eligible=true | Parse JSON output | Boolean result |
| Step | Action | Condition | Next Step |
|---|---|---|---|
| 2.1 | Proceed with investigation-only skip | Eligible=true, Violations=[] | Use "SKIPPED: investigation-only" |
| 2.2 | Address violations or invoke qa agent | Eligible=false | Fix violations or start new session |
| Skill | Purpose | When to Use |
|---|---|---|
| Test-InvestigationEligibility | Check if staged files qualify for investigation-only QA skip | Before committing with SKIPPED: investigation-only |
Check if staged files qualify for investigation-only QA skip per ADR-034.
python3 .claude/skills/session/scripts/test_investigation_eligibility.py
Returns JSON with:
| Field | Type | Description |
|---|---|---|
Eligible | boolean | true if all staged files are in allowlist |
StagedFiles | array | All staged file paths |
Violations | array | Files not in allowlist (empty if eligible) |
AllowedPaths | array | Reference list of allowed path prefixes |
Error | string | Present only on git errors |
| Code | Meaning |
|---|---|
| 0 | Success (eligibility result in JSON output) |
Note: The script always exits 0. Check the Eligible field in the JSON output to determine eligibility. The Error field is present when git commands fail.
| Scenario | Behavior | Output |
|---|---|---|
| Not in git repository | Returns JSON with Eligible: false | Error field explains the issue |
| Git command fails | Returns JSON with Eligible: false | Error field explains the issue |
| Empty staged files | Returns JSON with Eligible: true | StagedFiles is empty array |
| Mixed allowed/disallowed files | Returns JSON with Eligible: false | Violations lists disallowed files |
Eligible (investigation-only files):
{
"Eligible": true,
"StagedFiles": [".agents/sessions/2025-01-01-session-01.md"],
"Violations": [],
"AllowedPaths": [
".agents/sessions/",
".agents/analysis/",
".agents/retrospective/",
".serena/memories/",
".agents/security/"
]
}
Not eligible (contains code files):
{
"Eligible": false,
"StagedFiles": [
".agents/sessions/2025-01-01-session-01.md",
"scripts/MyScript.ps1"
],
"Violations": ["scripts/MyScript.ps1"],
"AllowedPaths": [
".agents/sessions/",
".agents/analysis/",
".agents/retrospective/",
".serena/memories/",
".agents/security/"
]
}
Git error:
{
"Eligible": false,
"StagedFiles": [],
"Violations": [],
"AllowedPaths": [
".agents/sessions/",
".agents/analysis/",
".agents/retrospective/",
".serena/memories/",
".agents/security/"
],
"Error": "Not in a git repository or git command failed"
}
This skill implements the verification step for Phase 2.5: QA Validation of the Session End Protocol:
SESSION-PROTOCOL.md (Phase 2.5: QA Validation)
│
├── Feature implementation → MUST invoke qa agent
│
└── Investigation session → MAY skip QA
│
└── test_investigation_eligibility.py
│
├── Eligible: true → Use "SKIPPED: investigation-only"
│
└── Eligible: false → MUST invoke qa agent
1. Stage your files
│
└── git add .agents/sessions/... .serena/memories/...
2. Run eligibility check
│
└── python3 .claude/skills/session/scripts/test_investigation_eligibility.py
3. Check output
│
├── Eligible: true
│ └── Safe to commit with "SKIPPED: investigation-only"
│
└── Eligible: false
│
├── Check Violations array
│ └── Either: Remove violating files from staging
│ └── Or: Start new session for implementation work
│
└── Invoke qa agent for the implementation work
Use this skill to validate the QA skip condition:
### Session End (COMPLETE ALL before closing)
| Req | Step | Status | Evidence |
|-----|------|--------|----------|
| MUST | Route to qa agent (feature implementation) | [x] | `SKIPPED: investigation-only` - Verified via test_investigation_eligibility.py |
These paths qualify for investigation-only QA exemption:
| Path | Purpose |
|---|---|
.agents/sessions/ | Session logs documenting work |
.agents/analysis/ | Investigation outputs and findings |
.agents/retrospective/ | Learnings and retrospective documents |
.serena/memories/ | Cross-session context storage |
.agents/security/ | Security assessments and reviews |
Important: This allowlist is defined by ADR-034 (Investigation Session QA Exemption). The patterns in test_investigation_eligibility.py are validated by Pester tests to ensure they match the ADR specification.
| Avoid | Why | Instead |
|---|---|---|
| Skipping eligibility check | May commit ineligible files with investigation-only skip | Always run the skill before using the skip |
| Ignoring violations | QA exemption won't be valid | Address violations or invoke qa agent |
| Using for code changes | Investigation-only is for analysis, not implementation | Start a new session for code work |
| Hardcoding path checks | Patterns may drift from ADR-034 specification | Use this skill which implements the ADR patterns |
After using this skill:
Eligible: trueViolations in outputError field in outputChecks if staged files qualify for investigation-only QA skip per ADR-034.
python3 .claude/skills/session/scripts/test_investigation_eligibility.py
| Reference | Description |
|---|---|
| ADR-034 | Investigation Session QA Exemption architecture decision |
| SESSION-PROTOCOL.md | Session start/end requirements (Phase 2.5) |
| Issue #662 | Create QA skip eligibility check skill |
| validate_session_json.py | Validates session JSON format (separate from eligibility) |
| test_investigation_eligibility.py | Pytest tests ensuring pattern consistency |