agentera 0.0.0 → 3.0.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -45
- package/bundle/.agentera-npx-bundle.json +4 -0
- package/bundle/references/adapters/cursor.md +213 -0
- package/bundle/references/adapters/opencode.md +530 -0
- package/bundle/references/adapters/package-manifest-interface-model.yaml +337 -0
- package/bundle/references/adapters/package-registry.yaml +247 -0
- package/bundle/references/adapters/package-surface-characterization.md +48 -0
- package/bundle/references/adapters/runtime-adapter-characterization.md +79 -0
- package/bundle/references/adapters/runtime-adapter-interface-model.yaml +200 -0
- package/bundle/references/adapters/runtime-adapter-registry.yaml +548 -0
- package/bundle/references/adapters/runtime-feature-parity.md +189 -0
- package/bundle/references/analysis/benchmark.md +267 -0
- package/bundle/references/analysis/startup-measurement-contract.yaml +424 -0
- package/bundle/references/artifacts/artifact-registry-interface-model.yaml +288 -0
- package/bundle/references/cli/agent-ready-state-contract.yaml +950 -0
- package/bundle/references/cli/app-lifecycle-vocabulary.yaml +233 -0
- package/bundle/references/cli/audience-namespace-cli-migration.yaml +355 -0
- package/bundle/references/cli/bundle-skill-vocabulary.yaml +278 -0
- package/bundle/references/cli/capability-instruction-contract.yaml +123 -0
- package/bundle/references/cli/capability-tool-classification.yaml +53 -0
- package/bundle/references/cli/routing-execution-vocabulary.yaml +281 -0
- package/bundle/references/cli/update-channels.yaml +120 -0
- package/bundle/references/cli/vocabulary-index.yaml +160 -0
- package/bundle/references/cli/vocabulary.md +562 -0
- package/bundle/references/meta/documentation-inventory.md +43 -0
- package/bundle/references/v1-section-mapping.md +47 -0
- package/bundle/registry.json +39 -0
- package/bundle/skills/agentera/.claude-plugin/plugin.json +27 -0
- package/bundle/skills/agentera/SKILL.md +470 -0
- package/bundle/skills/agentera/agents/dokumentera.toml +6 -0
- package/bundle/skills/agentera/agents/hej.toml +6 -0
- package/bundle/skills/agentera/agents/inspektera.toml +6 -0
- package/bundle/skills/agentera/agents/inspirera.toml +6 -0
- package/bundle/skills/agentera/agents/optimera.toml +6 -0
- package/bundle/skills/agentera/agents/orkestrera.toml +6 -0
- package/bundle/skills/agentera/agents/planera.toml +6 -0
- package/bundle/skills/agentera/agents/profilera.toml +6 -0
- package/bundle/skills/agentera/agents/realisera.toml +6 -0
- package/bundle/skills/agentera/agents/resonera.toml +6 -0
- package/bundle/skills/agentera/agents/visionera.toml +6 -0
- package/bundle/skills/agentera/agents/visualisera.toml +6 -0
- package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +428 -0
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +73 -0
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +35 -0
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/validation.yaml +139 -0
- package/bundle/skills/agentera/capabilities/hej/instructions.md +331 -0
- package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +69 -0
- package/bundle/skills/agentera/capabilities/hej/schemas/exit.yaml +32 -0
- package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +58 -0
- package/bundle/skills/agentera/capabilities/hej/schemas/validation.yaml +55 -0
- package/bundle/skills/agentera/capabilities/inspektera/instructions.md +514 -0
- package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +76 -0
- package/bundle/skills/agentera/capabilities/inspektera/schemas/exit.yaml +36 -0
- package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +38 -0
- package/bundle/skills/agentera/capabilities/inspektera/schemas/validation.yaml +113 -0
- package/bundle/skills/agentera/capabilities/inspirera/instructions.md +280 -0
- package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +24 -0
- package/bundle/skills/agentera/capabilities/inspirera/schemas/exit.yaml +33 -0
- package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +34 -0
- package/bundle/skills/agentera/capabilities/inspirera/schemas/validation.yaml +58 -0
- package/bundle/skills/agentera/capabilities/optimera/instructions.md +437 -0
- package/bundle/skills/agentera/capabilities/optimera/schemas/artifacts.yaml +69 -0
- package/bundle/skills/agentera/capabilities/optimera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +39 -0
- package/bundle/skills/agentera/capabilities/optimera/schemas/validation.yaml +91 -0
- package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +433 -0
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +64 -0
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/exit.yaml +34 -0
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +42 -0
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +107 -0
- package/bundle/skills/agentera/capabilities/planera/instructions.md +368 -0
- package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +62 -0
- package/bundle/skills/agentera/capabilities/planera/schemas/exit.yaml +33 -0
- package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +34 -0
- package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +61 -0
- package/bundle/skills/agentera/capabilities/profilera/instructions.md +419 -0
- package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +18 -0
- package/bundle/skills/agentera/capabilities/profilera/schemas/exit.yaml +34 -0
- package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +45 -0
- package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +57 -0
- package/bundle/skills/agentera/capabilities/realisera/instructions.md +403 -0
- package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +80 -0
- package/bundle/skills/agentera/capabilities/realisera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +39 -0
- package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +110 -0
- package/bundle/skills/agentera/capabilities/resonera/instructions.md +329 -0
- package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +47 -0
- package/bundle/skills/agentera/capabilities/resonera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +46 -0
- package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +77 -0
- package/bundle/skills/agentera/capabilities/visionera/instructions.md +309 -0
- package/bundle/skills/agentera/capabilities/visionera/schemas/artifacts.yaml +57 -0
- package/bundle/skills/agentera/capabilities/visionera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +41 -0
- package/bundle/skills/agentera/capabilities/visionera/schemas/validation.yaml +74 -0
- package/bundle/skills/agentera/capabilities/visualisera/instructions.md +400 -0
- package/bundle/skills/agentera/capabilities/visualisera/schemas/artifacts.yaml +44 -0
- package/bundle/skills/agentera/capabilities/visualisera/schemas/exit.yaml +34 -0
- package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +33 -0
- package/bundle/skills/agentera/capabilities/visualisera/schemas/validation.yaml +80 -0
- package/bundle/skills/agentera/capability_schema_contract.yaml +385 -0
- package/bundle/skills/agentera/protocol.yaml +463 -0
- package/bundle/skills/agentera/references/contract.md +1039 -0
- package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +60 -0
- package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +461 -0
- package/bundle/skills/agentera/schemas/artifacts/design.yaml +55 -0
- package/bundle/skills/agentera/schemas/artifacts/docs.yaml +402 -0
- package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +373 -0
- package/bundle/skills/agentera/schemas/artifacts/health.yaml +484 -0
- package/bundle/skills/agentera/schemas/artifacts/objective.yaml +399 -0
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +342 -0
- package/bundle/skills/agentera/schemas/artifacts/progress.yaml +325 -0
- package/bundle/skills/agentera/schemas/artifacts/todo.yaml +110 -0
- package/bundle/skills/agentera/schemas/artifacts/vision.yaml +262 -0
- package/bundle/skills/hej/.claude-plugin/plugin.json +6 -0
- package/bundle/skills/hej/SKILL.md +69 -0
- package/bundle/skills/hej/agents/hej.toml +11 -0
- package/bundle/skills/hej/agents/openai.yaml +8 -0
- package/dist/analytics/extractCorpus.js +1791 -0
- package/dist/analytics/extractCorpus.js.map +1 -0
- package/dist/analytics/usageStats.js +487 -0
- package/dist/analytics/usageStats.js.map +1 -0
- package/dist/bin/agentera.js +4 -0
- package/dist/bin/agentera.js.map +1 -0
- package/dist/cli/appContext.js +226 -0
- package/dist/cli/appContext.js.map +1 -0
- package/dist/cli/argvalidate.js +41 -0
- package/dist/cli/argvalidate.js.map +1 -0
- package/dist/cli/capabilityContext.js +2421 -0
- package/dist/cli/capabilityContext.js.map +1 -0
- package/dist/cli/commands/backfill.js +84 -0
- package/dist/cli/commands/backfill.js.map +1 -0
- package/dist/cli/commands/capability.js +44 -0
- package/dist/cli/commands/capability.js.map +1 -0
- package/dist/cli/commands/compact.js +148 -0
- package/dist/cli/commands/compact.js.map +1 -0
- package/dist/cli/commands/doctor.js +180 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/lint.js +179 -0
- package/dist/cli/commands/lint.js.map +1 -0
- package/dist/cli/commands/prime.js +545 -0
- package/dist/cli/commands/prime.js.map +1 -0
- package/dist/cli/commands/query.js +346 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/report.js +210 -0
- package/dist/cli/commands/report.js.map +1 -0
- package/dist/cli/commands/schema.js +306 -0
- package/dist/cli/commands/schema.js.map +1 -0
- package/dist/cli/commands/state.js +1012 -0
- package/dist/cli/commands/state.js.map +1 -0
- package/dist/cli/commands/upgrade.js +49 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/commands/validate.js +519 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/commands/verify.js +204 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/dispatch.js +962 -0
- package/dist/cli/dispatch.js.map +1 -0
- package/dist/cli/orientation.js +595 -0
- package/dist/cli/orientation.js.map +1 -0
- package/dist/cli/prime-blob.js +3 -0
- package/dist/cli/prime-blob.js.map +1 -0
- package/dist/cli/stateQuery.js +292 -0
- package/dist/cli/stateQuery.js.map +1 -0
- package/dist/cli/structured.js +18 -0
- package/dist/cli/structured.js.map +1 -0
- package/dist/core/difflib.js +274 -0
- package/dist/core/difflib.js.map +1 -0
- package/dist/core/git.js +43 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/paths.js +50 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/pyjson.js +101 -0
- package/dist/core/pyjson.js.map +1 -0
- package/dist/core/sourceRoot.js +72 -0
- package/dist/core/sourceRoot.js.map +1 -0
- package/dist/core/toml.js +11 -0
- package/dist/core/toml.js.map +1 -0
- package/dist/core/yaml.js +25 -0
- package/dist/core/yaml.js.map +1 -0
- package/dist/eval/evalSkills.js +258 -0
- package/dist/eval/evalSkills.js.map +1 -0
- package/dist/eval/semanticEval.js +148 -0
- package/dist/eval/semanticEval.js.map +1 -0
- package/dist/eval/semanticFixtures.js +227 -0
- package/dist/eval/semanticFixtures.js.map +1 -0
- package/dist/hooks/common.js +160 -0
- package/dist/hooks/common.js.map +1 -0
- package/dist/hooks/compaction.js +935 -0
- package/dist/hooks/compaction.js.map +1 -0
- package/dist/hooks/cursorPreToolUse.js +19 -0
- package/dist/hooks/cursorPreToolUse.js.map +1 -0
- package/dist/hooks/cursorSessionStart.js +71 -0
- package/dist/hooks/cursorSessionStart.js.map +1 -0
- package/dist/hooks/sessionStart.js +209 -0
- package/dist/hooks/sessionStart.js.map +1 -0
- package/dist/hooks/sessionStop.js +212 -0
- package/dist/hooks/sessionStop.js.map +1 -0
- package/dist/hooks/validateArtifact.js +933 -0
- package/dist/hooks/validateArtifact.js.map +1 -0
- package/dist/registries/artifactRegistry.js +206 -0
- package/dist/registries/artifactRegistry.js.map +1 -0
- package/dist/registries/capabilityContract.js +310 -0
- package/dist/registries/capabilityContract.js.map +1 -0
- package/dist/registries/packageRegistry.js +641 -0
- package/dist/registries/packageRegistry.js.map +1 -0
- package/dist/registries/runtimeAdapterRegistry.js +315 -0
- package/dist/registries/runtimeAdapterRegistry.js.map +1 -0
- package/dist/setup/codex.js +1052 -0
- package/dist/setup/codex.js.map +1 -0
- package/dist/setup/copilot.js +227 -0
- package/dist/setup/copilot.js.map +1 -0
- package/dist/setup/cursor.js +127 -0
- package/dist/setup/cursor.js.map +1 -0
- package/dist/setup/doctor.js +1269 -0
- package/dist/setup/doctor.js.map +1 -0
- package/dist/state/installRoot.js +279 -0
- package/dist/state/installRoot.js.map +1 -0
- package/dist/state/progressCommit.js +289 -0
- package/dist/state/progressCommit.js.map +1 -0
- package/dist/state/startupAnalysis.js +1953 -0
- package/dist/state/startupAnalysis.js.map +1 -0
- package/dist/upgrade/appModel.js +189 -0
- package/dist/upgrade/appModel.js.map +1 -0
- package/dist/upgrade/channels.js +197 -0
- package/dist/upgrade/channels.js.map +1 -0
- package/dist/upgrade/compatibility.js +197 -0
- package/dist/upgrade/compatibility.js.map +1 -0
- package/dist/upgrade/doctor.js +368 -0
- package/dist/upgrade/doctor.js.map +1 -0
- package/dist/upgrade/migrateArtifactsV2ToV3.js +412 -0
- package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -0
- package/dist/upgrade/upgradeCommands.js +40 -0
- package/dist/upgrade/upgradeCommands.js.map +1 -0
- package/dist/upgrade/upgradeOrchestrator.js +280 -0
- package/dist/upgrade/upgradeOrchestrator.js.map +1 -0
- package/dist/validate/appHomeContract.js +150 -0
- package/dist/validate/appHomeContract.js.map +1 -0
- package/dist/validate/capability.js +412 -0
- package/dist/validate/capability.js.map +1 -0
- package/dist/validate/crossCapability.js +145 -0
- package/dist/validate/crossCapability.js.map +1 -0
- package/dist/validate/lifecycleAdapters.js +772 -0
- package/dist/validate/lifecycleAdapters.js.map +1 -0
- package/dist/validate/selfAudit.js +107 -0
- package/dist/validate/selfAudit.js.map +1 -0
- package/package.json +28 -8
- package/LICENSE +0 -201
- package/bin/agentera.mjs +0 -50
- package/lib/exec.mjs +0 -116
- package/lib/resolve.mjs +0 -129
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
# PROFILERA
|
|
2
|
+
|
|
3
|
+
**Persona Reconstruction: Observable Footprint Indexing Logic. Extract, Reconcile, Formalize**
|
|
4
|
+
|
|
5
|
+
Mine the user's session history and produce a structured decision profile for predicting "What would this person decide?" Each entry carries numeric confidence, permanence classification, and temporal metadata enabling dormancy decay.
|
|
6
|
+
|
|
7
|
+
Skill introduction: `─── ♾ profilera · profile ───`
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Visual identity
|
|
12
|
+
|
|
13
|
+
Glyph: **♾** (protocol ref: SG9). Used in the mandatory exit marker.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## State artifacts
|
|
18
|
+
|
|
19
|
+
One global artifact (written) and project-level artifacts (read).
|
|
20
|
+
|
|
21
|
+
| Artifact | Purpose | Path |
|
|
22
|
+
|----------|---------|------|
|
|
23
|
+
| PROFILE.md | Decision profile consumed by all capabilities | `$PROFILERA_PROFILE_DIR/PROFILE.md` (default: `$XDG_DATA_HOME/agentera/PROFILE.md`) |
|
|
24
|
+
| DECISIONS.md | High-signal source for pattern extraction | `.agentera/decisions.yaml` (per docs.yaml mapping) |
|
|
25
|
+
|
|
26
|
+
### Artifact path resolution
|
|
27
|
+
|
|
28
|
+
PROFILE.md is global. Its base directory defaults to the platform-appropriate data directory (`$XDG_DATA_HOME/agentera/` on Linux, `~/Library/Application Support/agentera/` on macOS, `%APPDATA%/agentera/` on Windows). Override via `PROFILERA_PROFILE_DIR` environment variable. Existing profiles at `~/.claude/profile/` are auto-migrated on first run. `.agentera/docs.yaml` mapping does not apply to PROFILE.md. For project-level artifacts, check if .agentera/docs.yaml exists and use its path mapping; if absent, use the default layout.
|
|
29
|
+
|
|
30
|
+
### Contract values
|
|
31
|
+
|
|
32
|
+
Contract values are inlined where referenced. Confidence scale tiers CS1-CS5 for numeric boundaries (90-100, 70-89, 50-69, 30-49, 0-29) with thresholds at 65 (strong constraint) and 45 (suggestion). Visual tokens: confidence tokens VT9-VT11 (━/─/┄), list item VT15 (▸), inline separator VT16 (·), section divider VT14, progress bar VT18. Skill glyph SG9 for exit markers. Exit signals EX1-EX4 for status reporting. Decision labels DL1-DL3 for entry firmness.
|
|
33
|
+
|
|
34
|
+
`references/contract.md` (at the v2 skill location `skills/agentera/references/contract.md`) remains available as a full-spec reference for ambiguous cases or cross-checking.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
Two modes:
|
|
39
|
+
|
|
40
|
+
- **Full**: Detect available local runtime history, ask which extractable runtimes to include, synthesize from scratch, write a fresh PROFILE.md.
|
|
41
|
+
- **Validate**: Quick incremental check. Surface the ~6 entries most worth validating, let the user confirm or challenge each one, update metadata in place.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Step 0: Detect mode
|
|
46
|
+
|
|
47
|
+
Before doing anything else, check if `$PROFILERA_PROFILE_DIR/PROFILE.md` exists (default: `$XDG_DATA_HOME/agentera/PROFILE.md`).
|
|
48
|
+
|
|
49
|
+
**If it does NOT exist**: Proceed directly to Full mode (Step 1).
|
|
50
|
+
|
|
51
|
+
**If it DOES exist**: Present the mode choice.
|
|
52
|
+
|
|
53
|
+
Narration voice (riff, don't script):
|
|
54
|
+
|
|
55
|
+
- "Profile's here. Full rebuild or quick tune-up?" · "You've got a profile already. Regenerate from scratch, or just validate what's there?"
|
|
56
|
+
|
|
57
|
+
Offer:
|
|
58
|
+
|
|
59
|
+
> **Full**: Regenerate from scratch using all session data. Replaces the existing profile including any accumulated tensions. Best when the profile feels significantly outdated or you want a clean baseline.
|
|
60
|
+
>
|
|
61
|
+
> **Validate**: Quick check of your existing profile (~2 minutes). Reviews the entries most worth validating: confirm, challenge, or skip each one. Best for regular maintenance between full regenerations.
|
|
62
|
+
|
|
63
|
+
If the user chooses **Full**, proceed to Step 1.
|
|
64
|
+
If the user chooses **Validate**, skip to Validate Mode.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Full Mode
|
|
69
|
+
|
|
70
|
+
The sharp colleague, here to pay attention to how you decide, not run a classification pipeline. This is someone who's been watching your work, noticing patterns, and reflecting back what they've seen. "Here's what I've noticed about how you work," not "Signal extraction complete."
|
|
71
|
+
|
|
72
|
+
Step markers: display `── step N/6: verb` before each step.
|
|
73
|
+
Steps: detect, extract, read, categorize, generate, validate.
|
|
74
|
+
|
|
75
|
+
### Step 1: Detect runtime sources
|
|
76
|
+
|
|
77
|
+
Before asking what to include, run a deterministic local preview that uses the extractor defaults and writes a temporary preview corpus:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npx -y agentera report refresh --consent local-history --output <temporary-preview-corpus>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Read only the preview corpus top-level `metadata.runtime_statuses` plus per-runtime record counts. Do not display raw transcript content in the source-selection prompt. Remove the temporary preview after source selection unless it is reused as the final corpus for `All (Recommended)`.
|
|
84
|
+
|
|
85
|
+
Treat a runtime as selectable only when its status is `ok` and its `record_count` is greater than zero. Treat `missing`, `skipped`, `sparse`, and `degraded` runtimes as unavailable for this run; report them briefly with bounded status/reason labels and remediation labels when present.
|
|
86
|
+
|
|
87
|
+
Supported runtime sources:
|
|
88
|
+
|
|
89
|
+
- **Claude Code**: default `~/.claude/projects`, override with `--claude-projects-dir <path>`, disable with `--no-claude`
|
|
90
|
+
- **Codex**: default `~/.codex/sessions`, override with `--codex-sessions-dir <path>`, disable with `--no-codex`
|
|
91
|
+
- **OpenCode**: default `opencode db path` when available, override with `--opencode-conversations-dir <path>`, disable with `--no-opencode`
|
|
92
|
+
- **GitHub Copilot**: default `$COPILOT_HOME` or `~/.copilot`, override with `--copilot-conversations-dir <path>`, disable with `--no-copilot`
|
|
93
|
+
- **Cursor IDE**: default `$CURSOR_HOME/projects` or `~/.cursor/projects`, override with `--cursor-projects-dir <path>`, disable with `--no-cursor`
|
|
94
|
+
- **Cursor Agent CLI**: default `~/.config/cursor/chats`, override with `--cursor-chats-dir <path>` or `$CURSOR_CONFIG_HOME/chats`; disabled with `--no-cursor`
|
|
95
|
+
|
|
96
|
+
Ask which runtime histories to include with a multi-select question. Put `All (Recommended)` first; it means every selectable runtime from the preview and wins over any individual runtime selections. Also offer one option per selectable runtime and a docs/config-only option for cases where the user wants no runtime conversation history. The question controls runtime conversation sources only; instruction documents and project config signals remain included.
|
|
97
|
+
|
|
98
|
+
If no runtime has extractable records, skip the selection question, say no local runtime history is currently extractable, and continue with instruction documents and project config signals.
|
|
99
|
+
|
|
100
|
+
### Step 2: Run extraction
|
|
101
|
+
|
|
102
|
+
Read `$PROFILERA_PROFILE_DIR/intermediate/corpus.json` if it already exists and still matches the selected runtime set. If the corpus is absent, stale, or was produced for a different source selection, run the extractor from the Agentera app:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
npx -y agentera report refresh --consent local-history
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Apply runtime opt-out flags from Step 1. For example, if the user selects Claude Code and OpenCode only, run with `--no-codex --no-copilot --no-cursor`. If the user selects docs/config-only, run with `--no-claude --no-codex --no-opencode --no-copilot --no-cursor`. If the user selects `All (Recommended)`, use no runtime opt-out flags.
|
|
109
|
+
|
|
110
|
+
The extractor writes the default `$PROFILERA_PROFILE_DIR/intermediate/corpus.json` envelope and emits the four portable Section 22 families: `instruction_document`, `history_prompt`, `conversation_turn`, and `project_config_signal`. Use `--output <path>`, repeated `--project-root <path>`, `--codex-sessions-dir <path>`, `--claude-projects-dir <path>`, `--opencode-conversations-dir <path>`, `--copilot-conversations-dir <path>`, `--cursor-projects-dir <path>`, or `--cursor-chats-dir <path>` when the host stores data outside the defaults.
|
|
111
|
+
|
|
112
|
+
Read the corpus file's top-level `metadata` object to confirm counts per source family. Report totals to the user.
|
|
113
|
+
|
|
114
|
+
**If extraction fails**: common causes include `npx`/agentera not found, permission errors, and empty output (no session history). If only some runtimes fail, the corpus will contain partial data with bounded runtime notes in `metadata.runtime_statuses`; proceed and note missing sources.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
### Step 3: Read corpus data
|
|
119
|
+
|
|
120
|
+
Read the corpus.json produced in Step 2. Each record carries a `source_kind` field. Group records by source family for synthesis:
|
|
121
|
+
|
|
122
|
+
1. **instruction_document**: Memory files, CLAUDE.md, AGENTS.md (highest signal: explicit user instructions)
|
|
123
|
+
2. **history_prompt**: Decision-rich prompts from session history
|
|
124
|
+
3. **conversation_turn**: Decision exchanges from conversations (most nuanced: real-time reasoning)
|
|
125
|
+
4. **project_config_signal**: Recurring config patterns across projects (most objective: what shipped)
|
|
126
|
+
|
|
127
|
+
Read the full corpus before synthesis. If total records exceed 500, prioritize high-signal records:
|
|
128
|
+
|
|
129
|
+
- history correction or decision kinds
|
|
130
|
+
- longer user responses
|
|
131
|
+
- configs shared across projects
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
### Step 4: Categorize and synthesize
|
|
136
|
+
|
|
137
|
+
Group signals into 12 categories:
|
|
138
|
+
|
|
139
|
+
1. **Architecture & Design Patterns**: package layout, abstraction boundaries, API design
|
|
140
|
+
2. **Technology & Tooling Selection**: languages, frameworks, libraries, build tools
|
|
141
|
+
3. **Agent & Automation Philosophy**: agent behavior, autonomy, interaction patterns
|
|
142
|
+
4. **Code Quality & Standards**: error handling, testing, validation, naming
|
|
143
|
+
5. **DX & Project Structure**: directory layout, build targets, configuration
|
|
144
|
+
6. **Scoping & Prioritization**: what to build, milestones, complexity budgets
|
|
145
|
+
7. **Communication Style**: writing preferences, documentation voice
|
|
146
|
+
8. **Process & Workflow**: git workflow, commit conventions, release process
|
|
147
|
+
9. **UI/UX Preferences**: visual patterns, interaction design, CLI vs TUI vs web
|
|
148
|
+
10. **Trade-off Heuristics**: simplicity vs flexibility, speed vs correctness
|
|
149
|
+
11. **Anti-patterns & Rejections**: things actively avoided, with reasoning
|
|
150
|
+
12. **Meta-decision Style**: frameworks used, information gathering, decide vs defer
|
|
151
|
+
|
|
152
|
+
Per category: identify distinct decisions (not just preferences; decisions have conditions and reasoning), look for the *why*, note exceptions where the rule was overridden.
|
|
153
|
+
|
|
154
|
+
#### Assign confidence (numeric, 0-100, protocol ref: CS1-CS5)
|
|
155
|
+
|
|
156
|
+
Decision patterns are empirically verifiable via git history and configs:
|
|
157
|
+
|
|
158
|
+
| Range | Label | Token | Criteria |
|
|
159
|
+
|-------|-------|-------|----------|
|
|
160
|
+
| 90-100 (CS1) | Shipped consistently | ━ (VT9) | Appears in configs/code across 3+ projects, verifiable from artifacts |
|
|
161
|
+
| 70-89 (CS2) | Established | ━ (VT9) | Consistent across sessions, corroborated by behavior |
|
|
162
|
+
| 50-69 (CS3) | Emerging | ─ (VT10) | Observed multiple times but limited context or minor variations |
|
|
163
|
+
| 30-49 (CS4) | Single signal | ┄ (VT11) | One data point or inferred from adjacent patterns |
|
|
164
|
+
| 0-29 (CS5) | Speculative | ┄ (VT11) | No direct evidence, extrapolated from related decisions |
|
|
165
|
+
|
|
166
|
+
**Bias check**: Confidence is earned through evidence, not assigned by how insightful the decision sounds. A pithy design principle observed once is 30, not 75.
|
|
167
|
+
|
|
168
|
+
#### Assign permanence class
|
|
169
|
+
|
|
170
|
+
Permanence captures domain *stability*, independent of confidence. You can be highly confident about something that will change (85, situational) or uncertain about something deep (35, stable).
|
|
171
|
+
|
|
172
|
+
| Class | Domain | Timescale |
|
|
173
|
+
|-------|--------|-----------|
|
|
174
|
+
| **stable** | Architecture principles, design patterns, meta-decision heuristics | Decade |
|
|
175
|
+
| **durable** | Tooling choices, code standards, process conventions, DX preferences | Year |
|
|
176
|
+
| **situational** | Current project priorities, active initiative choices, recent tech stack picks | Month |
|
|
177
|
+
|
|
178
|
+
Default permanence mapping by category:
|
|
179
|
+
|
|
180
|
+
- Architecture & Design Patterns, Meta-decision Style → stable
|
|
181
|
+
- Technology & Tooling, Code Quality & Standards, Process & Workflow, DX & Project Structure,
|
|
182
|
+
Communication Style, Trade-off Heuristics, Anti-patterns → durable
|
|
183
|
+
- Scoping & Prioritization, UI/UX Preferences → situational (unless clearly long-standing)
|
|
184
|
+
- Agent & Automation Philosophy → durable (unless project-specific)
|
|
185
|
+
|
|
186
|
+
Override the default when the evidence suggests otherwise.
|
|
187
|
+
|
|
188
|
+
#### Set dates
|
|
189
|
+
|
|
190
|
+
- **first**: Earliest timestamp from the source data that evidences this decision
|
|
191
|
+
- **refresh date**: Set to today's date (the generation date)
|
|
192
|
+
- **challenged**: Set to `—` (none yet on a fresh profile)
|
|
193
|
+
|
|
194
|
+
#### Identify tensions
|
|
195
|
+
|
|
196
|
+
Look for cross-category patterns and contradictions: stated principle vs shipped code, conflicts between categories, "Exceptions" suggesting a weaker rule. Record contradictions in the Tensions section rather than smoothing them into a coherent narrative.
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
### Step 5: Generate the profile
|
|
201
|
+
|
|
202
|
+
Output constraint: ≤30 words per signal, ≤15 words per evidence line.
|
|
203
|
+
|
|
204
|
+
Write the decision profile to `$PROFILERA_PROFILE_DIR/PROFILE.md`.
|
|
205
|
+
|
|
206
|
+
If a previous version exists: copy to `$PROFILERA_PROFILE_DIR/history/PROFILE-{timestamp}.md`, generate new version, show change summary (added, updated, removed).
|
|
207
|
+
|
|
208
|
+
When presenting the profile, frame it as a colleague reflecting on what they've observed, not a system delivering results. Open with what stood out, what surprised you, where the user is most consistent and where they contradict themselves. The structured profile follows, but the human read comes first.
|
|
209
|
+
|
|
210
|
+
#### Profile format
|
|
211
|
+
|
|
212
|
+
```markdown
|
|
213
|
+
# Decision Profile: [User Name]
|
|
214
|
+
|
|
215
|
+
<!-- Generated: {date} | Data: {date range from earliest to latest timestamp} -->
|
|
216
|
+
<!-- Sources: {N} memory files, {N} history prompts, {N} conversation exchanges, {N} configs -->
|
|
217
|
+
<!-- Decay parameters: stable λ=0.001, durable λ=0.005, situational λ=0.015 -->
|
|
218
|
+
<!-- Formula: effective_conf = conf × e^(-λ × days_since_confirmed), floor 20 -->
|
|
219
|
+
<!-- Regenerate with /agentera profile -->
|
|
220
|
+
|
|
221
|
+
## How to Use This Profile
|
|
222
|
+
|
|
223
|
+
This profile captures decision-making patterns extracted from {N} months of sessions across {N} projects. Each entry carries inline metadata:
|
|
224
|
+
|
|
225
|
+
`━ conf:75 | perm:durable | first:2026-01-15 | confirmed:2026-03-28 | challenged:—`
|
|
226
|
+
|
|
227
|
+
- **conf** (0-100): Evidence-based confidence. 90+ shipped consistently (CS1), 70-89
|
|
228
|
+
established (CS2), 50-69 emerging (CS3), 30-49 single signal (CS4), 0-29 speculative (CS5).
|
|
229
|
+
Line weight tokens: ━ (VT9) high (90-100), ─ (VT10) medium (50-89), ┄ (VT11) low (0-49).
|
|
230
|
+
- **perm**: How stable the decision domain is. stable (decade), durable (year),
|
|
231
|
+
situational (month).
|
|
232
|
+
- **dates**: When the decision was first observed, refreshed,
|
|
233
|
+
and last challenged.
|
|
234
|
+
|
|
235
|
+
When consuming this profile, compute effective confidence using the decay formula.
|
|
236
|
+
Stale situational entries carry less weight than fresh stable ones.
|
|
237
|
+
|
|
238
|
+
**When the profile is silent**: If a situation isn't covered, look for the closest trade-off
|
|
239
|
+
heuristic or meta-decision pattern. When truly uncertain, ask.
|
|
240
|
+
|
|
241
|
+
## Decision-Making Philosophy
|
|
242
|
+
|
|
243
|
+
[2-3 paragraphs describing the meta-patterns: how this person approaches decisions, what
|
|
244
|
+
frameworks they use, their risk posture, when they decide quickly vs deliberate, what
|
|
245
|
+
information they seek before deciding]
|
|
246
|
+
|
|
247
|
+
## [Category Name]
|
|
248
|
+
|
|
249
|
+
### [Decision Name]
|
|
250
|
+
`━ conf:75 | perm:durable | first:2026-01-15 | confirmed:2026-03-28 | challenged:—`
|
|
251
|
+
|
|
252
|
+
- ▸ **Rule**: [Imperative statement an agent can follow directly]
|
|
253
|
+
- ▸ **When**: [Specific conditions or triggers for this rule]
|
|
254
|
+
- ▸ **Why**: [The reasoning, the value or concern that drives this]
|
|
255
|
+
- ▸ **Exceptions**: [Known cases where this was overridden, or "None observed"]
|
|
256
|
+
|
|
257
|
+
[Repeat for each decision in the category. Order by confidence (highest first).]
|
|
258
|
+
|
|
259
|
+
[Repeat for all 12 categories. Skip categories with no signal.]
|
|
260
|
+
|
|
261
|
+
## Tensions
|
|
262
|
+
|
|
263
|
+
Each entry records a contradiction or divergence found during profile generation or challenged during validation. Default status is **unresolved**. Resist the urge to wrap tensions in resolution narratives. Some tensions are real and persistent.
|
|
264
|
+
|
|
265
|
+
### YYYY-MM-DD: [Short description]
|
|
266
|
+
|
|
267
|
+
**Decision affected**: [which decision was contradicted]
|
|
268
|
+
**What happened**: [what was observed or said that didn't fit]
|
|
269
|
+
**Status**: unresolved
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
#### Writing guidelines
|
|
273
|
+
|
|
274
|
+
- Write rules as imperatives ("Use X" not "[Name] prefers X")
|
|
275
|
+
- Be specific ("when building Go CLIs" not "when building things")
|
|
276
|
+
- Always include the *why* because agents need reasoning for edge cases
|
|
277
|
+
- Don't duplicate CLAUDE.md. This covers decision *patterns*, not project instructions
|
|
278
|
+
- Omit categories with <2 decisions (insufficient signal)
|
|
279
|
+
- Every entry MUST have inline metadata after the ### heading
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
### Step 6: Validate predictions
|
|
284
|
+
|
|
285
|
+
Pick 5 decision-rich prompts NOT used to create profile entries. For each: predict what the profile would recommend, check against what happened. Report accuracy (e.g., "4/5"). Below 3/5: identify categories needing more signal, note in profile header.
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Validate Mode
|
|
290
|
+
|
|
291
|
+
Quick incremental check (~2 minutes). Same colleague voice: you're checking in on what you noticed before, not running a diagnostic. "Still true? Let me know."
|
|
292
|
+
|
|
293
|
+
Step markers: display `── step N/4: verb` before each step.
|
|
294
|
+
Steps: select, present, apply, write.
|
|
295
|
+
|
|
296
|
+
### Step V1: Run smart selection
|
|
297
|
+
|
|
298
|
+
Identify which entries are most worth checking by reading `$PROFILERA_PROFILE_DIR/PROFILE.md` directly and prioritizing high-confidence, stale, or tension-heavy entries. If PROFILE.md is missing, fall back to Full mode.
|
|
299
|
+
|
|
300
|
+
### Step V2: Present entries for validation
|
|
301
|
+
|
|
302
|
+
Present entries one at a time: decision name, rule text, reason surfaced, stored vs effective confidence. Ask: **Confirm**, **Challenge**, or **Skip**.
|
|
303
|
+
|
|
304
|
+
### Step V3: Apply updates
|
|
305
|
+
|
|
306
|
+
For each response:
|
|
307
|
+
|
|
308
|
+
- **Confirm**: Bump `conf` by 5 (cap at 95). Update `confirmed` to today's date.
|
|
309
|
+
- **Challenge**: Soften `conf` by 10 (floor at 10). Update `challenged` to today's date.
|
|
310
|
+
Append a tension entry to the `## Tensions` section:
|
|
311
|
+
|
|
312
|
+
```
|
|
313
|
+
### {today}: {decision name} challenged during validation
|
|
314
|
+
**Decision affected**: {decision name}
|
|
315
|
+
**What happened**: Challenged by user during validation
|
|
316
|
+
**Status**: unresolved
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
- **Skip**: No changes to this entry.
|
|
320
|
+
|
|
321
|
+
### Step V4: Write and report
|
|
322
|
+
|
|
323
|
+
Write updated PROFILE.md. Report: "Reviewed {N} entries: {N} accepted, {N} challenged, {N} skipped." Mention challenged entries by name.
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Safety rails
|
|
328
|
+
|
|
329
|
+
<critical>
|
|
330
|
+
- NEVER fabricate decision patterns. Every profile entry must be grounded in observed evidence from session history, memory files, configs, or conversation data.
|
|
331
|
+
- NEVER assign confidence higher than the evidence warrants. A single data point is 30-49 (CS4), not 70+, regardless of how insightful the decision sounds.
|
|
332
|
+
- NEVER smooth over contradictions. When evidence conflicts, record tensions rather than forcing a coherent narrative.
|
|
333
|
+
- NEVER modify the user's session history, memory files, or config files. Profilera reads these sources; it never writes to them.
|
|
334
|
+
- NEVER share profile contents with external services or include them in commits.
|
|
335
|
+
</critical>
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
## Exit signals
|
|
340
|
+
|
|
341
|
+
Report one of these statuses at workflow completion (protocol refs: EX1-EX4).
|
|
342
|
+
|
|
343
|
+
Format: emit `♾ profilera · <status>` on its own line, followed by a one-sentence summary. For `flagged` (EX2), `stuck` (EX3), and `waiting` (EX4), add a ▸ (VT15) bullet below the summary identifying what needs attention. The exit marker uses profilera's canonical glyph ♾ (SG9, U+267E).
|
|
344
|
+
|
|
345
|
+
- **complete** (EX1): PROFILE.md was written (Full mode) or updated (Validate mode). Metadata changes were applied, prediction accuracy was assessed, and changes were summarized.
|
|
346
|
+
- **flagged** (EX2): Profile generation or validation completed but with data quality issues: extraction failed for one or more sources, prediction accuracy was below 3/5, or significant tensions were found that could not be resolved from available evidence.
|
|
347
|
+
- **stuck** (EX3): Cannot generate or validate a profile because the extraction scripts failed entirely, Python is unavailable, or `~/.claude/` is unreadable and no session data can be accessed.
|
|
348
|
+
- **waiting** (EX4): The user chose Validate mode but PROFILE.md lacks valid metadata. A Full mode run needs user approval, or the requested mode is ambiguous.
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
## Cross-capability integration
|
|
353
|
+
|
|
354
|
+
Profilera is part of a twelve-capability suite. The decision profile it produces is consumed by the other capabilities.
|
|
355
|
+
|
|
356
|
+
### Consumed by realisera
|
|
357
|
+
|
|
358
|
+
Realisera runs the effective profile script in its Orient step to get a confidence-weighted summary table. High effective confidence entries are treated as strong constraints; low effective confidence entries are treated as suggestions. Full rules are read from PROFILE.md when needed for detailed reasoning.
|
|
359
|
+
|
|
360
|
+
### Consumed by optimera
|
|
361
|
+
|
|
362
|
+
Optimera runs the effective profile script to calibrate experimentation style: how aggressive to be, how much complexity is acceptable, what trade-offs the user prefers. Effective confidence weighting ensures stale preferences don't over-constrain experiments.
|
|
363
|
+
|
|
364
|
+
### Consumed by inspirera
|
|
365
|
+
|
|
366
|
+
Inspirera can run the effective profile script to inform applicability judgments: what patterns the user favors, what they resist, how to weigh recommendations. High-confidence entries strongly constrain recommendations; low-confidence entries are treated as tendencies.
|
|
367
|
+
|
|
368
|
+
### Consumed by resonera
|
|
369
|
+
|
|
370
|
+
Resonera reads the decision profile at the start of every deliberation. High-confidence entries in the relevant domain are acknowledged upfront to prevent re-deliberating settled preferences. Low-confidence entries are surfaced as hypotheses worth testing during the conversation.
|
|
371
|
+
|
|
372
|
+
### Fed by resonera
|
|
373
|
+
|
|
374
|
+
DECISIONS.md (maintained by resonera) is a high-signal source for profilera's extraction scripts. Each decision entry captures reasoning, tradeoffs, and confidence, making deliberation sessions one of the richest inputs for decision profile generation. For normal read-only extraction, prefer `agentera decisions --format json` and preserve returned `missing_fields`, `compacted`, `caveats`, and `satisfaction.review_needed` pressure rather than raw-reading missing historical context.
|
|
375
|
+
|
|
376
|
+
### Consumed by inspektera
|
|
377
|
+
|
|
378
|
+
Inspektera reads the decision profile to calibrate what "healthy" means for this user. Quality preferences, complexity tolerance, and pattern priorities from the profile weight the grading and determine which findings matter most.
|
|
379
|
+
|
|
380
|
+
### Consumed by planera
|
|
381
|
+
|
|
382
|
+
Planera reads the decision profile during its Orient step to calibrate planning depth, pattern preferences, and constraint priorities.
|
|
383
|
+
|
|
384
|
+
### Profile consumption
|
|
385
|
+
|
|
386
|
+
All consuming capabilities read `$PROFILERA_PROFILE_DIR/PROFILE.md` directly when it exists. Confidence thresholds and dormancy notes are kept in the profile itself so the guidance remains editable and portable.
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## Getting started
|
|
391
|
+
|
|
392
|
+
### First profile generation
|
|
393
|
+
|
|
394
|
+
```
|
|
395
|
+
/agentera profile
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
Full extraction across all sources. Produces `$PROFILERA_PROFILE_DIR/PROFILE.md`.
|
|
399
|
+
|
|
400
|
+
### Regular validation
|
|
401
|
+
|
|
402
|
+
```
|
|
403
|
+
/agentera profile validate
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
Quick confidence refresh without full regeneration. Run weekly or per-session.
|
|
407
|
+
|
|
408
|
+
### Using the profile in other capabilities
|
|
409
|
+
|
|
410
|
+
All capabilities may read the profile directly when `PROFILE.md` exists. No manual steps needed; just ensure PROFILE.md exists.
|
|
411
|
+
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
## Notes on depth vs speed
|
|
415
|
+
|
|
416
|
+
- Extraction scripts handle I/O; Claude's job is synthesis, not parsing.
|
|
417
|
+
- Large intermediate files: use subagents to read in parallel.
|
|
418
|
+
- Signal hierarchy: crystallized.json (highest: memory + CLAUDE.md), conversation exchanges (most nuanced: real-time reasoning), config patterns (most objective: what shipped).
|
|
419
|
+
- Validate mode: weekly/per-session. Full mode: monthly or when significantly stale.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
ARTIFACTS:
|
|
2
|
+
1:
|
|
3
|
+
id: A1
|
|
4
|
+
artifact_id: profile
|
|
5
|
+
local_role: produces_and_consumes
|
|
6
|
+
description: >-
|
|
7
|
+
Decision profile with per-entry confidence scoring, permanence
|
|
8
|
+
classification, and temporal metadata. Profilera writes this in both Full
|
|
9
|
+
and Validate modes, then reads it for validation and update context.
|
|
10
|
+
2:
|
|
11
|
+
id: A2
|
|
12
|
+
artifact_id: decisions
|
|
13
|
+
local_role: consumes
|
|
14
|
+
description: >-
|
|
15
|
+
Profilera treats this as a high-signal source for extraction scripts.
|
|
16
|
+
Each decision entry captures
|
|
17
|
+
reasoning, tradeoffs, and confidence, making deliberation sessions
|
|
18
|
+
one of the richest inputs for decision profile generation.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
EXIT_CONDITIONS:
|
|
2
|
+
1:
|
|
3
|
+
id: E1
|
|
4
|
+
condition: complete
|
|
5
|
+
description: >-
|
|
6
|
+
PROFILE.md was written (Full mode) or updated (Validate mode).
|
|
7
|
+
Metadata changes were applied, prediction accuracy was assessed
|
|
8
|
+
(Full mode), and changes were summarized.
|
|
9
|
+
exit_signal: complete
|
|
10
|
+
2:
|
|
11
|
+
id: E2
|
|
12
|
+
condition: flagged
|
|
13
|
+
description: >-
|
|
14
|
+
Profile generation or validation completed but with data quality
|
|
15
|
+
issues: extraction failed for one or more sources, prediction
|
|
16
|
+
accuracy was below 3/5, or significant unresolved tensions were
|
|
17
|
+
found.
|
|
18
|
+
exit_signal: flagged
|
|
19
|
+
3:
|
|
20
|
+
id: E3
|
|
21
|
+
condition: stuck
|
|
22
|
+
description: >-
|
|
23
|
+
Cannot generate or validate a profile because extraction scripts
|
|
24
|
+
failed entirely, Python is unavailable, or session data sources
|
|
25
|
+
are unreadable.
|
|
26
|
+
exit_signal: stuck
|
|
27
|
+
4:
|
|
28
|
+
id: E4
|
|
29
|
+
condition: waiting
|
|
30
|
+
description: >-
|
|
31
|
+
The user chose Validate mode but PROFILE.md lacks valid metadata,
|
|
32
|
+
a Full mode run needs user approval, or the requested mode is
|
|
33
|
+
ambiguous.
|
|
34
|
+
exit_signal: waiting
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
TRIGGERS:
|
|
2
|
+
1:
|
|
3
|
+
id: T1
|
|
4
|
+
description: >-
|
|
5
|
+
Direct invocation by name or slash command. Matches when the user
|
|
6
|
+
explicitly requests profilera.
|
|
7
|
+
priority: high
|
|
8
|
+
patterns:
|
|
9
|
+
- "profilera"
|
|
10
|
+
- "/profilera"
|
|
11
|
+
2:
|
|
12
|
+
id: T2
|
|
13
|
+
description: >-
|
|
14
|
+
Profile generation requests. Matches when the user wants to build
|
|
15
|
+
or regenerate their decision profile from scratch.
|
|
16
|
+
priority: medium
|
|
17
|
+
patterns:
|
|
18
|
+
- "build decision profile"
|
|
19
|
+
- "generate decision profile"
|
|
20
|
+
- "rebuild my profile"
|
|
21
|
+
- "regenerate profile"
|
|
22
|
+
3:
|
|
23
|
+
id: T3
|
|
24
|
+
description: >-
|
|
25
|
+
Profile maintenance requests. Matches when the user wants to update,
|
|
26
|
+
validate, or check their existing profile.
|
|
27
|
+
priority: medium
|
|
28
|
+
patterns:
|
|
29
|
+
- "update my profile"
|
|
30
|
+
- "refresh my decision profile"
|
|
31
|
+
- "validate my profile"
|
|
32
|
+
- "check my profile"
|
|
33
|
+
- "quick profile check"
|
|
34
|
+
4:
|
|
35
|
+
id: T4
|
|
36
|
+
description: >-
|
|
37
|
+
Decision analysis requests. Matches when the user wants to understand
|
|
38
|
+
their own decision-making patterns or review past decisions.
|
|
39
|
+
priority: medium
|
|
40
|
+
patterns:
|
|
41
|
+
- "what would I decide"
|
|
42
|
+
- "analyze my decisions"
|
|
43
|
+
- "mine my sessions"
|
|
44
|
+
- "decision patterns"
|
|
45
|
+
- "review my decision history"
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
VALIDATION:
|
|
2
|
+
1:
|
|
3
|
+
id: V1
|
|
4
|
+
rule: evidence_grounded
|
|
5
|
+
description: >-
|
|
6
|
+
Every profile entry MUST be grounded in observed evidence from session
|
|
7
|
+
history, memory files, configs, or conversation data. Fabricated
|
|
8
|
+
decision patterns are never acceptable.
|
|
9
|
+
severity: critical
|
|
10
|
+
checks:
|
|
11
|
+
- "Each profile entry traces to a source record"
|
|
12
|
+
- "No profile entry is fabricated without evidence"
|
|
13
|
+
2:
|
|
14
|
+
id: V2
|
|
15
|
+
rule: confidence_calibration
|
|
16
|
+
description: >-
|
|
17
|
+
Confidence scores MUST match the evidence tier (protocol CS1-CS5).
|
|
18
|
+
A single data point is 30-49 (CS4), not 70+. Bias check: confidence
|
|
19
|
+
is earned through evidence, not assigned by how insightful the
|
|
20
|
+
decision sounds.
|
|
21
|
+
severity: critical
|
|
22
|
+
checks:
|
|
23
|
+
- "Confidence values fall within protocol tier boundaries"
|
|
24
|
+
- "Single-source entries are capped at CS4 (30-49)"
|
|
25
|
+
3:
|
|
26
|
+
id: V3
|
|
27
|
+
rule: tension_honesty
|
|
28
|
+
description: >-
|
|
29
|
+
Contradictions MUST be recorded as tensions, not smoothed into a
|
|
30
|
+
coherent narrative. When evidence conflicts, the tension section
|
|
31
|
+
captures the divergence explicitly.
|
|
32
|
+
severity: critical
|
|
33
|
+
checks:
|
|
34
|
+
- "Conflicting evidence produces tension entries"
|
|
35
|
+
- "No smoothing over contradictions"
|
|
36
|
+
4:
|
|
37
|
+
id: V4
|
|
38
|
+
rule: read_only_sources
|
|
39
|
+
description: >-
|
|
40
|
+
Profilera MUST NOT modify session history, memory files, or config
|
|
41
|
+
files. It reads these sources for extraction but never writes to them.
|
|
42
|
+
The only artifact profilera produces is PROFILE.md.
|
|
43
|
+
severity: critical
|
|
44
|
+
checks:
|
|
45
|
+
- "No writes to session history files"
|
|
46
|
+
- "No writes to memory or config files"
|
|
47
|
+
5:
|
|
48
|
+
id: V5
|
|
49
|
+
rule: prediction_accuracy
|
|
50
|
+
description: >-
|
|
51
|
+
Full mode MUST validate predictions against 5 decision-rich prompts
|
|
52
|
+
not used to create the profile. Accuracy below 3/5 triggers a flag
|
|
53
|
+
noting categories needing more signal.
|
|
54
|
+
severity: warning
|
|
55
|
+
checks:
|
|
56
|
+
- "5 predictions tested against held-out prompts"
|
|
57
|
+
- "Accuracy below 3/5 is flagged in profile header"
|