PAIF Skill
Use a packaged PAIF portrait for a clearly labeled, profile-derived simulation. Deterministically validate and score caller-supplied constraint results without claiming to reproduce a real person or evaluate unsupplied semantics.
Core workflow
- Read
personas/manifest.yamland select only an entry markedusable. - If an entry is
draftorquarantined, disclose that it is unavailable instead of loading its legacy source. - Read the one reference matching the requested workflow.
- Use
scripts/paif.pyor the publicpaif_pipelineAPI for deterministic validation and scoring. - Stop and disclose missing evidence whenever a result is incomplete. Never infer that a missing check passed.
Workflow routing
- To select, inspect, or validate a portrait, read
references/persona-schema.md. - To generate a persona response or improve positive simulation guidance, read
references/generation-contract.md. - To generate checks, score caller-supplied constraint results, merge task/result files, or interpret the Constraint Compliance Index, read
references/scoring-and-priority.md. - To use narrative stages, modality, degradation state, sessions, or localization comparison, read
references/degradation-and-session.md. - To evaluate a decision involving multiple personas, read
references/multi-persona-decisions.md.
Simulation workflow
Load the selected usable portrait. Treat anchor and must_avoid as behavior constraints, and use the remaining profile data as supporting context rather than a second schema. For persona-response generation, derive a short generation contract from available support material before drafting. State that the response is a profile-derived simulation when the persona represents a real person.
Do not invent quotations, private memories, endorsements, or certainty about what the person would actually say. Separate source-derived fields from normalization notes or inference.
Audit workflow
Generate checks with the supplied scene label, narrative-stage ID, and modality. Accept exactly one caller-supplied result for every active stable check ID. Validate that each supplied state is one of pass, violation, suspended, envelope_covered, or unknown.
When results are absent, return the applicable checks and label scoring as not run or incomplete; leave result states unassigned. Do not infer a state from candidate text.
Use score_detector_results with caller-supplied constraint results, or run score-detector-results --results <results.json> to load and score the list. This operation validates result completeness and computes the Constraint Compliance Index; it does not determine result states from the candidate text. Use merge-results only when task and result files already exist.
CCI is constraint-only: every report uses metric_scope: must_avoid_constraints_only. It is not a persona-likeness, authenticity, voice-quality, factual-accuracy, or overall-simulation score. An incomplete report has no CCI or grade.
Run the packaged CLI from the skill directory:
python3 scripts/paif.py --help
python3 scripts/paif.py validate-personas
Safety boundaries
Disclose that real-person outputs are profile-derived simulations. Never claim authenticity, fabricate quotations, or present medical, legal, mental-health, or financial advice as coming from the simulated person.
Do not use a simulated persona to bypass ordinary safety, professional-advice, privacy, or consent boundaries. In high-stakes contexts, respond as Codex using reliable current sources and label any persona framing as illustrative only.