Use when investigating a specific entity (person, organization, event) across Pyrite knowledge bases. Enforces source chain tracking, relationship mapping, and confidence-rated findings. Every claim must link to a source.
Entity-focused investigation methodology for Pyrite knowledge bases. Produces a sourced entity profile with mapped relationships and confidence-rated findings.
Announce at start: "I'm using the investigation skill."
Methodology: Identify → Collect → Map → Track → Assess
The non-negotiable rule: Every factual claim in the output must link to a source entry via [[wikilink]]. No exceptions. If there's no source entry, create one first.
Define exactly what entity you're investigating.
TARGET DEFINITION:
- Entity name:
- Entity type: person / organization / event / topic
- What specifically do we want to know?
- What KBs are likely relevant?
- Known aliases or alternate names:
Check if the entity already has an entry:
pyrite search "<entity name>" --limit 20
pyrite search "<entity name>" --mode=semantic --limit 10
If an entry exists, read it fully: pyrite get <entry-id>
Create a task list with TaskCreate to track investigation progress.
Systematically find every reference to this entity across all KBs.
# Direct name search
pyrite search "<entity name>" --limit 50
# Search aliases and alternate spellings
pyrite search "<alias>" --limit 20
# Search by role/title if a person
pyrite search "<role or title>" --type=person --limit 20
# Search related organizations
pyrite search "<org name>" --limit 20
# Timeline search for events involving this entity
pyrite timeline --from=<start> --to=<end>
# Backlinks from known entries
pyrite backlinks <entity-entry-id> --kb=<name>
# Tag-based discovery
pyrite search "<entity>" --tag=<relevant-tag>
For each mention found:
If the entity has no entry yet, create one:
# Person
pyrite create --kb=<name> --type=person --title="<Full Name>" \
--body="<initial summary>" --tags="<relevant-tags>" \
--field role="<primary role>"
# Organization
pyrite create --kb=<name> --type=organization --title="<Org Name>" \
--body="<initial summary>" --tags="<relevant-tags>"
Collection completeness check:
- [ ] Searched all relevant KBs
- [ ] Searched name + known aliases
- [ ] Searched related entities (employers, associates, counterparts)
- [ ] Checked backlinks from entity's own entry
- [ ] Checked timeline for temporal context
- [ ] Created entries for important sources not yet in the KB
Document how this entity connects to others.
For each relationship discovered:
| From | Relationship | To | Source | Confidence |
|---|---|---|---|---|
[[entity]] | employs / funds / opposes / etc. | [[other-entity]] | [[source]] | High/Med/Low |
# Find connections through shared tags
pyrite tags --kb=<name>
# Find connections through shared events
pyrite search "<entity>" --type=event
# Trace through backlinks
pyrite backlinks <entity-id> --kb=<name>
pyrite backlinks <related-entity-id> --kb=<name>
See relationship-mapping.md for relationship type vocabulary and mapping techniques.
Mapping checklist:
- [ ] Direct relationships documented (employer, colleague, opponent, etc.)
- [ ] Indirect relationships noted (shared events, shared organizations)
- [ ] Temporal relationships mapped (preceded by, succeeded by, concurrent with)
- [ ] Each relationship has a source entry
- [ ] Relationship strength/confidence noted
Every claim needs a traceable path back to evidence. This is what separates investigation from speculation.
Source chain format:
Claim: "<factual statement>"
Source: [[entry-id]] (Tier 1/2/3/4)
Corroboration: [[other-entry-id]] or "none"
Tier definitions:
| Tier | Type | Example |
|---|---|---|
| 1 | Primary / direct evidence | Official documents, court filings, public records |
| 2 | Established reporting | Bylined journalism, government reports, academic papers |
| 3 | Secondary analysis | Commentary, think tank reports, expert blog posts |
| 4 | Unverified | Anonymous sources, social media, unattributed claims |
Source chain rules:
Create the entity profile entry using the template from entity-profile-template.md.
pyrite update <entity-id> --kb=<name> --body="<updated profile>"
Or if creating a new investigation summary:
pyrite create --kb=<name> --type=note --title="Investigation: <entity>" \
--body="<profile content>" --tags="investigation,<entity-tags>"
Assessment checklist:
- [ ] Every factual claim links to a source via [[wikilink]]
- [ ] Confidence level assigned to each major finding
- [ ] Contradictions between sources explicitly noted
- [ ] Gaps in knowledge explicitly stated
- [ ] Relationships mapped with sources
- [ ] Timeline of key events constructed
- [ ] Unverified claims flagged clearly
| Trap | Fix |
|---|---|
| Writing claims without source links | Every claim gets a [[source]]. No exceptions. |
| Treating all mentions as equal weight | Apply tier system. A Tier 4 mention ≠ a Tier 1 document. |
| Ignoring absence of evidence | "No entries found about X's role in Y" is a finding. Document gaps. |
| Circular investigation | If Entry A cites Entry B which cites Entry A, you have one source, not two. |
| Scope creep | Stay focused on the target entity. Note related entities for follow-up, don't investigate them now. |
| Unsourced relationship claims | "X is connected to Y" needs a source entry showing the connection. |