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.
Files changed (252) hide show
  1. package/README.md +6 -45
  2. package/bundle/.agentera-npx-bundle.json +4 -0
  3. package/bundle/references/adapters/cursor.md +213 -0
  4. package/bundle/references/adapters/opencode.md +530 -0
  5. package/bundle/references/adapters/package-manifest-interface-model.yaml +337 -0
  6. package/bundle/references/adapters/package-registry.yaml +247 -0
  7. package/bundle/references/adapters/package-surface-characterization.md +48 -0
  8. package/bundle/references/adapters/runtime-adapter-characterization.md +79 -0
  9. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +200 -0
  10. package/bundle/references/adapters/runtime-adapter-registry.yaml +548 -0
  11. package/bundle/references/adapters/runtime-feature-parity.md +189 -0
  12. package/bundle/references/analysis/benchmark.md +267 -0
  13. package/bundle/references/analysis/startup-measurement-contract.yaml +424 -0
  14. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +288 -0
  15. package/bundle/references/cli/agent-ready-state-contract.yaml +950 -0
  16. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +233 -0
  17. package/bundle/references/cli/audience-namespace-cli-migration.yaml +355 -0
  18. package/bundle/references/cli/bundle-skill-vocabulary.yaml +278 -0
  19. package/bundle/references/cli/capability-instruction-contract.yaml +123 -0
  20. package/bundle/references/cli/capability-tool-classification.yaml +53 -0
  21. package/bundle/references/cli/routing-execution-vocabulary.yaml +281 -0
  22. package/bundle/references/cli/update-channels.yaml +120 -0
  23. package/bundle/references/cli/vocabulary-index.yaml +160 -0
  24. package/bundle/references/cli/vocabulary.md +562 -0
  25. package/bundle/references/meta/documentation-inventory.md +43 -0
  26. package/bundle/references/v1-section-mapping.md +47 -0
  27. package/bundle/registry.json +39 -0
  28. package/bundle/skills/agentera/.claude-plugin/plugin.json +27 -0
  29. package/bundle/skills/agentera/SKILL.md +470 -0
  30. package/bundle/skills/agentera/agents/dokumentera.toml +6 -0
  31. package/bundle/skills/agentera/agents/hej.toml +6 -0
  32. package/bundle/skills/agentera/agents/inspektera.toml +6 -0
  33. package/bundle/skills/agentera/agents/inspirera.toml +6 -0
  34. package/bundle/skills/agentera/agents/optimera.toml +6 -0
  35. package/bundle/skills/agentera/agents/orkestrera.toml +6 -0
  36. package/bundle/skills/agentera/agents/planera.toml +6 -0
  37. package/bundle/skills/agentera/agents/profilera.toml +6 -0
  38. package/bundle/skills/agentera/agents/realisera.toml +6 -0
  39. package/bundle/skills/agentera/agents/resonera.toml +6 -0
  40. package/bundle/skills/agentera/agents/visionera.toml +6 -0
  41. package/bundle/skills/agentera/agents/visualisera.toml +6 -0
  42. package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +428 -0
  43. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +73 -0
  44. package/bundle/skills/agentera/capabilities/dokumentera/schemas/exit.yaml +35 -0
  45. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +35 -0
  46. package/bundle/skills/agentera/capabilities/dokumentera/schemas/validation.yaml +139 -0
  47. package/bundle/skills/agentera/capabilities/hej/instructions.md +331 -0
  48. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +69 -0
  49. package/bundle/skills/agentera/capabilities/hej/schemas/exit.yaml +32 -0
  50. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +58 -0
  51. package/bundle/skills/agentera/capabilities/hej/schemas/validation.yaml +55 -0
  52. package/bundle/skills/agentera/capabilities/inspektera/instructions.md +514 -0
  53. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +76 -0
  54. package/bundle/skills/agentera/capabilities/inspektera/schemas/exit.yaml +36 -0
  55. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +38 -0
  56. package/bundle/skills/agentera/capabilities/inspektera/schemas/validation.yaml +113 -0
  57. package/bundle/skills/agentera/capabilities/inspirera/instructions.md +280 -0
  58. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +24 -0
  59. package/bundle/skills/agentera/capabilities/inspirera/schemas/exit.yaml +33 -0
  60. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +34 -0
  61. package/bundle/skills/agentera/capabilities/inspirera/schemas/validation.yaml +58 -0
  62. package/bundle/skills/agentera/capabilities/optimera/instructions.md +437 -0
  63. package/bundle/skills/agentera/capabilities/optimera/schemas/artifacts.yaml +69 -0
  64. package/bundle/skills/agentera/capabilities/optimera/schemas/exit.yaml +35 -0
  65. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +39 -0
  66. package/bundle/skills/agentera/capabilities/optimera/schemas/validation.yaml +91 -0
  67. package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +433 -0
  68. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +64 -0
  69. package/bundle/skills/agentera/capabilities/orkestrera/schemas/exit.yaml +34 -0
  70. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +42 -0
  71. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +107 -0
  72. package/bundle/skills/agentera/capabilities/planera/instructions.md +368 -0
  73. package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +62 -0
  74. package/bundle/skills/agentera/capabilities/planera/schemas/exit.yaml +33 -0
  75. package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +34 -0
  76. package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +61 -0
  77. package/bundle/skills/agentera/capabilities/profilera/instructions.md +419 -0
  78. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +18 -0
  79. package/bundle/skills/agentera/capabilities/profilera/schemas/exit.yaml +34 -0
  80. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +45 -0
  81. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +57 -0
  82. package/bundle/skills/agentera/capabilities/realisera/instructions.md +403 -0
  83. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +80 -0
  84. package/bundle/skills/agentera/capabilities/realisera/schemas/exit.yaml +35 -0
  85. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +39 -0
  86. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +110 -0
  87. package/bundle/skills/agentera/capabilities/resonera/instructions.md +329 -0
  88. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +47 -0
  89. package/bundle/skills/agentera/capabilities/resonera/schemas/exit.yaml +35 -0
  90. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +46 -0
  91. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +77 -0
  92. package/bundle/skills/agentera/capabilities/visionera/instructions.md +309 -0
  93. package/bundle/skills/agentera/capabilities/visionera/schemas/artifacts.yaml +57 -0
  94. package/bundle/skills/agentera/capabilities/visionera/schemas/exit.yaml +35 -0
  95. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +41 -0
  96. package/bundle/skills/agentera/capabilities/visionera/schemas/validation.yaml +74 -0
  97. package/bundle/skills/agentera/capabilities/visualisera/instructions.md +400 -0
  98. package/bundle/skills/agentera/capabilities/visualisera/schemas/artifacts.yaml +44 -0
  99. package/bundle/skills/agentera/capabilities/visualisera/schemas/exit.yaml +34 -0
  100. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +33 -0
  101. package/bundle/skills/agentera/capabilities/visualisera/schemas/validation.yaml +80 -0
  102. package/bundle/skills/agentera/capability_schema_contract.yaml +385 -0
  103. package/bundle/skills/agentera/protocol.yaml +463 -0
  104. package/bundle/skills/agentera/references/contract.md +1039 -0
  105. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +60 -0
  106. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +461 -0
  107. package/bundle/skills/agentera/schemas/artifacts/design.yaml +55 -0
  108. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +402 -0
  109. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +373 -0
  110. package/bundle/skills/agentera/schemas/artifacts/health.yaml +484 -0
  111. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +399 -0
  112. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +342 -0
  113. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +325 -0
  114. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +110 -0
  115. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +262 -0
  116. package/bundle/skills/hej/.claude-plugin/plugin.json +6 -0
  117. package/bundle/skills/hej/SKILL.md +69 -0
  118. package/bundle/skills/hej/agents/hej.toml +11 -0
  119. package/bundle/skills/hej/agents/openai.yaml +8 -0
  120. package/dist/analytics/extractCorpus.js +1791 -0
  121. package/dist/analytics/extractCorpus.js.map +1 -0
  122. package/dist/analytics/usageStats.js +487 -0
  123. package/dist/analytics/usageStats.js.map +1 -0
  124. package/dist/bin/agentera.js +4 -0
  125. package/dist/bin/agentera.js.map +1 -0
  126. package/dist/cli/appContext.js +226 -0
  127. package/dist/cli/appContext.js.map +1 -0
  128. package/dist/cli/argvalidate.js +41 -0
  129. package/dist/cli/argvalidate.js.map +1 -0
  130. package/dist/cli/capabilityContext.js +2421 -0
  131. package/dist/cli/capabilityContext.js.map +1 -0
  132. package/dist/cli/commands/backfill.js +84 -0
  133. package/dist/cli/commands/backfill.js.map +1 -0
  134. package/dist/cli/commands/capability.js +44 -0
  135. package/dist/cli/commands/capability.js.map +1 -0
  136. package/dist/cli/commands/compact.js +148 -0
  137. package/dist/cli/commands/compact.js.map +1 -0
  138. package/dist/cli/commands/doctor.js +180 -0
  139. package/dist/cli/commands/doctor.js.map +1 -0
  140. package/dist/cli/commands/lint.js +179 -0
  141. package/dist/cli/commands/lint.js.map +1 -0
  142. package/dist/cli/commands/prime.js +545 -0
  143. package/dist/cli/commands/prime.js.map +1 -0
  144. package/dist/cli/commands/query.js +346 -0
  145. package/dist/cli/commands/query.js.map +1 -0
  146. package/dist/cli/commands/report.js +210 -0
  147. package/dist/cli/commands/report.js.map +1 -0
  148. package/dist/cli/commands/schema.js +306 -0
  149. package/dist/cli/commands/schema.js.map +1 -0
  150. package/dist/cli/commands/state.js +1012 -0
  151. package/dist/cli/commands/state.js.map +1 -0
  152. package/dist/cli/commands/upgrade.js +49 -0
  153. package/dist/cli/commands/upgrade.js.map +1 -0
  154. package/dist/cli/commands/validate.js +519 -0
  155. package/dist/cli/commands/validate.js.map +1 -0
  156. package/dist/cli/commands/verify.js +204 -0
  157. package/dist/cli/commands/verify.js.map +1 -0
  158. package/dist/cli/dispatch.js +962 -0
  159. package/dist/cli/dispatch.js.map +1 -0
  160. package/dist/cli/orientation.js +595 -0
  161. package/dist/cli/orientation.js.map +1 -0
  162. package/dist/cli/prime-blob.js +3 -0
  163. package/dist/cli/prime-blob.js.map +1 -0
  164. package/dist/cli/stateQuery.js +292 -0
  165. package/dist/cli/stateQuery.js.map +1 -0
  166. package/dist/cli/structured.js +18 -0
  167. package/dist/cli/structured.js.map +1 -0
  168. package/dist/core/difflib.js +274 -0
  169. package/dist/core/difflib.js.map +1 -0
  170. package/dist/core/git.js +43 -0
  171. package/dist/core/git.js.map +1 -0
  172. package/dist/core/paths.js +50 -0
  173. package/dist/core/paths.js.map +1 -0
  174. package/dist/core/pyjson.js +101 -0
  175. package/dist/core/pyjson.js.map +1 -0
  176. package/dist/core/sourceRoot.js +72 -0
  177. package/dist/core/sourceRoot.js.map +1 -0
  178. package/dist/core/toml.js +11 -0
  179. package/dist/core/toml.js.map +1 -0
  180. package/dist/core/yaml.js +25 -0
  181. package/dist/core/yaml.js.map +1 -0
  182. package/dist/eval/evalSkills.js +258 -0
  183. package/dist/eval/evalSkills.js.map +1 -0
  184. package/dist/eval/semanticEval.js +148 -0
  185. package/dist/eval/semanticEval.js.map +1 -0
  186. package/dist/eval/semanticFixtures.js +227 -0
  187. package/dist/eval/semanticFixtures.js.map +1 -0
  188. package/dist/hooks/common.js +160 -0
  189. package/dist/hooks/common.js.map +1 -0
  190. package/dist/hooks/compaction.js +935 -0
  191. package/dist/hooks/compaction.js.map +1 -0
  192. package/dist/hooks/cursorPreToolUse.js +19 -0
  193. package/dist/hooks/cursorPreToolUse.js.map +1 -0
  194. package/dist/hooks/cursorSessionStart.js +71 -0
  195. package/dist/hooks/cursorSessionStart.js.map +1 -0
  196. package/dist/hooks/sessionStart.js +209 -0
  197. package/dist/hooks/sessionStart.js.map +1 -0
  198. package/dist/hooks/sessionStop.js +212 -0
  199. package/dist/hooks/sessionStop.js.map +1 -0
  200. package/dist/hooks/validateArtifact.js +933 -0
  201. package/dist/hooks/validateArtifact.js.map +1 -0
  202. package/dist/registries/artifactRegistry.js +206 -0
  203. package/dist/registries/artifactRegistry.js.map +1 -0
  204. package/dist/registries/capabilityContract.js +310 -0
  205. package/dist/registries/capabilityContract.js.map +1 -0
  206. package/dist/registries/packageRegistry.js +641 -0
  207. package/dist/registries/packageRegistry.js.map +1 -0
  208. package/dist/registries/runtimeAdapterRegistry.js +315 -0
  209. package/dist/registries/runtimeAdapterRegistry.js.map +1 -0
  210. package/dist/setup/codex.js +1052 -0
  211. package/dist/setup/codex.js.map +1 -0
  212. package/dist/setup/copilot.js +227 -0
  213. package/dist/setup/copilot.js.map +1 -0
  214. package/dist/setup/cursor.js +127 -0
  215. package/dist/setup/cursor.js.map +1 -0
  216. package/dist/setup/doctor.js +1269 -0
  217. package/dist/setup/doctor.js.map +1 -0
  218. package/dist/state/installRoot.js +279 -0
  219. package/dist/state/installRoot.js.map +1 -0
  220. package/dist/state/progressCommit.js +289 -0
  221. package/dist/state/progressCommit.js.map +1 -0
  222. package/dist/state/startupAnalysis.js +1953 -0
  223. package/dist/state/startupAnalysis.js.map +1 -0
  224. package/dist/upgrade/appModel.js +189 -0
  225. package/dist/upgrade/appModel.js.map +1 -0
  226. package/dist/upgrade/channels.js +197 -0
  227. package/dist/upgrade/channels.js.map +1 -0
  228. package/dist/upgrade/compatibility.js +197 -0
  229. package/dist/upgrade/compatibility.js.map +1 -0
  230. package/dist/upgrade/doctor.js +368 -0
  231. package/dist/upgrade/doctor.js.map +1 -0
  232. package/dist/upgrade/migrateArtifactsV2ToV3.js +412 -0
  233. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -0
  234. package/dist/upgrade/upgradeCommands.js +40 -0
  235. package/dist/upgrade/upgradeCommands.js.map +1 -0
  236. package/dist/upgrade/upgradeOrchestrator.js +280 -0
  237. package/dist/upgrade/upgradeOrchestrator.js.map +1 -0
  238. package/dist/validate/appHomeContract.js +150 -0
  239. package/dist/validate/appHomeContract.js.map +1 -0
  240. package/dist/validate/capability.js +412 -0
  241. package/dist/validate/capability.js.map +1 -0
  242. package/dist/validate/crossCapability.js +145 -0
  243. package/dist/validate/crossCapability.js.map +1 -0
  244. package/dist/validate/lifecycleAdapters.js +772 -0
  245. package/dist/validate/lifecycleAdapters.js.map +1 -0
  246. package/dist/validate/selfAudit.js +107 -0
  247. package/dist/validate/selfAudit.js.map +1 -0
  248. package/package.json +28 -8
  249. package/LICENSE +0 -201
  250. package/bin/agentera.mjs +0 -50
  251. package/lib/exec.mjs +0 -116
  252. 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"