文件预览

SKILL.md

查看 Coding Pronoun Prompt Resolver 技能包中的文件内容。

文件内容

SKILL.md

---
name: pronoun-resolver
version: 0.10.0
description: |
  Detects ambiguous pronouns, vague referents, and bare imperatives in user messages
  and flags them for resolution using conversation context. Zero-latency detection via
  hook; resolution happens inside the conversation where context lives. Self-learning
  via correction ledger with adaptive confidence tiering.
capabilities:
  - user-prompt-submit hook (fires on every message, regex-only, no LLM calls)
  - file-write: ~/.claude/skills/pronoun-resolver/.claude/pronoun-ledger.json (resolution metadata, no raw prompts)
  - file-write: ~/.claude/skills/pronoun-resolver/.claude/pronoun-resolver-analytics.jsonl (per-message stats)
data_retention: |
  All data is local-only, never transmitted externally. Prompts are hashed (SHA-256),
  never stored as text. Both data files can be deleted without affecting functionality.
hooks:
  user-prompt-submit:
    - type: command
      command: "bash ${CLAUDE_SKILL_DIR}/bin/detect-pronouns.sh"
      statusMessage: "Scanning for ambiguous references..."
---

# Pronoun Resolver

## Arguments

If invoked with `--stats`: run `python3 ~/.claude/skills/pronoun-resolver/bin/stats.py` and display the output. Do not proceed with the rest of this skill.

---

You are operating with the pronoun resolver active. When the hook detects ambiguous
references in a user message, you will see flags injected before the message.

## Your Role

YOU are the resolver. You have the conversation context. The hook just detects — you decide.

## Resolution Tiering

When you see `[AMBIGUOUS:]` flags, apply this framework:

### GREEN — Resolve silently (90%+ confidence)
The referent is obvious from the last 1-3 messages. Just act. Don't mention the resolution.
- "Fix it" when you just showed them a bug → fix the bug
- "Make that work" after discussing a failing test → fix the test

### YELLOW — State assumption, proceed (70-90% confidence)
You're fairly sure but there's ambiguity. State what you're assuming in one line, then act.
- "I'm taking 'the other one' to mean `auth.ts` since we discussed two files. Acting on that."

### RED — Ask before acting (<70% confidence)
Multiple plausible referents, or no recent context to resolve against. Ask concisely.
- "What should I make good — the UI layout we discussed or the API response format?"

### BLACK — Bare imperative, no context at all
First message of a conversation with no object. Always ask.
- "Make good" with no prior context → "What would you like me to improve?"

## Flag Format

The hook outputs a preamble followed by flags:
```
[PRONOUN-RESOLVER: Resolve these using conversation context. HIGH confidence=act silently. MEDIUM=state assumption then act. LOW/no context=ask user first.]
[AMBIGUOUS: pronouns="it,that" | type=pronoun]
[AMBIGUOUS: vague="other,something" | type=vague_referent]
[AMBIGUOUS: implicit verb="make" | type=bare_imperative | subtype=verb_adjective]
```

## Ledger

Resolution accuracy is tracked at `~/.claude/skills/pronoun-resolver/.claude/pronoun-ledger.json`.
When you resolve an ambiguous reference, log it. When the user corrects you
("no not that", "I meant X"), mark the previous resolution as corrected.

The ledger schema:
```json
{
  "resolutions": [...],
  "resolution_count": 0,
  "adaptive_threshold": 0.8,
  "context_reliability": {}
}
```

Each resolution entry:
```json
{
  "timestamp": "ISO8601",
  "pronoun": "it",
  "prompt_hash": "sha256 hex of the full prompt (no raw text stored)",
  "resolved_to": "the auth middleware",
  "tier_used": "green|yellow|red|black",
  "confidence": 0.92,
  "was_corrected": false
}
```

Never store raw prompt text in the ledger. Use `prompt_hash` for deduplication only.

## Correction Detection

If the user's next message corrects your resolution:
1. Mark the previous ledger entry as `was_corrected: true`
2. Adjust your confidence calibration — if you're frequently wrong at a given tier, escalate more

## Adaptation

Every 10 resolutions, check your accuracy:
- If >90% correct at green tier → you're well calibrated
- If <75% correct → shift toward yellow/red (ask more often)
- Track which context signals (last edited file, recent discussion topic, etc.) are most reliable

## Disable

If the user creates `.claude/pronoun-resolver-disabled` in the project root, stop resolving.

## What Gets Detected

1. **Personal pronouns** (always flagged): it, them, they, its
2. **Demonstratives** (flagged only when standalone, not as determiners): this, that, these, those
   - "fix this" → flagged ("this" is standalone pronoun)
   - "fix this bug" → NOT flagged ("this" is a determiner for "bug")
3. **Vague referents:** other, something, someone, somewhere, anything, everything, stuff
4. **Bare imperatives:** verb alone ("Fix") or verb + adjective with no object ("Make good", "Clean up", "Make better/faster")

## Install

1. Symlink or copy this directory to `~/.claude/skills/pronoun-resolver`
2. Add the hook to `~/.claude/settings.json`:
```json
"UserPromptSubmit": [
  {
    "hooks": [
      {
        "type": "command",
        "command": "bash /ABSOLUTE/PATH/TO/.claude/skills/pronoun-resolver/bin/detect-pronouns.sh"
      }
    ]
  }
]
```
Note: The path must be absolute. Update it if the skill is moved.