# Session

> Session management and protocol compliance skills. Use Test-InvestigationEligibility to check if staged files qualify for investigation-only QA skip per ADR-034 before committing with 'SKIPPED investigation-only' verdict. Use when this capability is needed.

- Skill: `tomevault-io/session-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/session-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/session-2/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/session-2

---


# Session Skills

Skills for session management and protocol compliance.

## Triggers

| 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 |

## When to Use

Use this skill when:

- About to commit investigation-only work and need to verify QA skip eligibility
- Session log uses "SKIPPED: investigation-only" verdict
- Staged files should be checked against ADR-034 allowlist

Use [session-init](../session-init/SKILL.md) instead when:

- Starting a new session and creating the session log
- Need protocol-compliant session initialization

Use the qa agent instead when:

- Feature implementation work was done (not investigation-only)
- Eligibility check returns Eligible: false

---

## Process

### Phase 1: Eligibility Check

| 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 |

### Phase 2: Commit Decision

| 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 |

---

## Quick Reference

| Skill | Purpose | When to Use |
|-------|---------|-------------|
| Test-InvestigationEligibility | Check if staged files qualify for investigation-only QA skip | Before committing with `SKIPPED: investigation-only` |

---

## Test Investigation Eligibility

Check if staged files qualify for investigation-only QA skip per ADR-034.

### Trigger Phrases

- "Check if I can skip QA"
- "Am I eligible for investigation-only?"
- "Verify investigation session eligibility"
- "Can I use SKIPPED: investigation-only?"

### Usage

```bash
python3 .claude/skills/session/scripts/test_investigation_eligibility.py
```

### Output

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 |

### Exit Codes

| 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.

### Error Handling

| 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 |

### Example Outputs

**Eligible (investigation-only files)**:

```json
{
  "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)**:

```json
{
  "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**:

```json
{
  "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"
}
```

---

## Agent Workflow Integration

### SESSION-PROTOCOL.md Relationship

This skill implements the verification step for **Phase 2.5: QA Validation** of the Session End Protocol:

```text
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
```

### Workflow: Before Committing Investigation Work

```text
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
```

### Integration with Session End Checklist

Use this skill to validate the QA skip condition:

```markdown
### 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 |
```

---

## Allowed Paths (Investigation Allowlist)

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.

---

## Anti-Patterns

| 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 |

---

## Verification Checklist

After using this skill:

- [ ] Skill output shows `Eligible: true`
- [ ] No `Violations` in output
- [ ] No `Error` field in output
- [ ] Session log evidence updated with skill output

---

## Scripts

### test_investigation_eligibility.py

Checks if staged files qualify for investigation-only QA skip per ADR-034.

```bash
python3 .claude/skills/session/scripts/test_investigation_eligibility.py
```

---

## Related

| Reference | Description |
|-----------|-------------|
| [ADR-034](../../../.agents/architecture/decisions/adr-034-investigation-session-qa-exemption.md) | Investigation Session QA Exemption architecture decision |
| [SESSION-PROTOCOL.md](../../../.agents/SESSION-PROTOCOL.md) | Session start/end requirements (Phase 2.5) |
| [Issue #662](https://github.com/rjmurillo/ai-agents/issues/662) | Create QA skip eligibility check skill |
| [validate_session_json.py](../../../scripts/validate_session_json.py) | Validates session JSON format (separate from eligibility) |
| [test_investigation_eligibility.py](tests/test_investigation_eligibility.py) | Pytest tests ensuring pattern consistency |

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/rjmurillo) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

