coherence-cli 0.3.0__tar.gz → 0.4.0__tar.gz

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 (75) hide show
  1. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/recall/scripts/recall.sh +35 -13
  2. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/remember/scripts/remember.sh +39 -13
  3. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/CHANGELOG.md +39 -0
  4. coherence_cli-0.4.0/CLAUDE.md +56 -0
  5. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/PKG-INFO +1 -1
  6. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/pyproject.toml +1 -1
  7. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/uv.lock +1 -1
  8. coherence_cli-0.3.0/CLAUDE.md +0 -28
  9. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/agent-config/SKILL.md +0 -0
  10. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
  11. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/agent-config/scripts/show.sh +0 -0
  12. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/ask-colleague/SKILL.md +0 -0
  13. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/ask-colleague/prompts/explore.md +0 -0
  14. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/ask-colleague/prompts/review.md +0 -0
  15. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/ask-colleague/prompts/write.md +0 -0
  16. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/ask-colleague/scripts/ask-colleague.sh +0 -0
  17. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
  18. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
  19. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/cicd/SKILL.md +0 -0
  20. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
  21. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
  22. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
  23. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
  24. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/cicd/scripts/workflow.sh +0 -0
  25. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/SKILL.md +0 -0
  26. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
  27. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
  28. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
  29. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
  30. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +0 -0
  31. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
  32. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
  33. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
  34. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
  35. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
  36. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/recall/SKILL.md +0 -0
  37. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/remember/SKILL.md +0 -0
  38. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/run-tests/SKILL.md +0 -0
  39. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/run-tests/scripts/test.sh +0 -0
  40. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/sonarclaude/SKILL.md +0 -0
  41. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
  42. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/spec-to-plan/SKILL.md +0 -0
  43. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
  44. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/think/SKILL.md +0 -0
  45. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/think/scripts/think.sh +0 -0
  46. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/version-bump/SKILL.md +0 -0
  47. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/version-bump/scripts/bump.py +0 -0
  48. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills.local.yaml.example +0 -0
  49. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.flake8 +0 -0
  50. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.github/workflows/publish.yml +0 -0
  51. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.github/workflows/tests.yml +0 -0
  52. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.gitignore +0 -0
  53. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.markdownlint-cli2.yaml +0 -0
  54. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/LICENSE +0 -0
  55. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/README.md +0 -0
  56. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/__init__.py +0 -0
  57. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/__main__.py +0 -0
  58. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/__init__.py +0 -0
  59. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/__init__.py +0 -0
  60. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/cli.py +0 -0
  61. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/doctor.py +0 -0
  62. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/explain.py +0 -0
  63. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/learn.py +0 -0
  64. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/overview.py +0 -0
  65. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/whoami.py +0 -0
  66. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_errors.py +0 -0
  67. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_output.py +0 -0
  68. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/explain/__init__.py +0 -0
  69. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/explain/catalog.py +0 -0
  70. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/culture.yaml +0 -0
  71. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/docs/skill-sources.md +0 -0
  72. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/sonar-project.properties +0 -0
  73. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/tests/__init__.py +0 -0
  74. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/tests/test_cli.py +0 -0
  75. {coherence_cli-0.3.0 → coherence_cli-0.4.0}/tests/test_cli_introspection.py +0 -0
@@ -6,10 +6,11 @@
6
6
  # forwards every flag verbatim — so `recall.sh "<query>" --mode hybrid --json`
7
7
  # is exactly `eidetic recall "<query>" --mode hybrid --json`.
8
8
  #
9
- # The store is the files backend at ~/.eidetic/memory by default — a home-dir
10
- # path OUTSIDE any git worktree, so Claude and the colleague backend (which runs
11
- # in throwaway worktrees) read the SAME memories. Set EIDETIC_DATA_DIR to opt out
12
- # of sharing; set EIDETIC_MONGO_URI / NEO4J_URI + --backend for a server store.
9
+ # The store is the files backend. Default location resolves per-operation:
10
+ # PUBLIC records inside a git repo <repo-root>/.eidetic/memory (committed,
11
+ # team-shared); PRIVATE records, or any record outside a git repo
12
+ # $HOME/.eidetic/memory (never committed). Recall reads both stores and merges.
13
+ # An explicit EIDETIC_DATA_DIR wins and short-circuits to that single dir.
13
14
 
14
15
  set -euo pipefail
15
16
 
@@ -34,12 +35,10 @@ resolve_eidetic() {
34
35
  fi
35
36
  dir=$(dirname "$dir")
36
37
  done
37
- cat >&2 <<'EOF'
38
- error: eidetic CLI not found.
39
- hint: install it with `uv tool install eidetic-cli` (or `pipx install eidetic-cli`),
40
- or run from inside the eidetic-cli checkout with `uv` available.
41
- The console script is `eidetic` (dist name: eidetic-cli).
42
- EOF
38
+ # In a vendored copy there is no eidetic-cli checkout to fall back to, so the
39
+ # only honest remedy is to install the CLI. One `error:` + one `hint:` line.
40
+ printf 'error: eidetic CLI not found.\n' >&2
41
+ printf 'hint: install it with: uv tool install eidetic-cli (or pipx install eidetic-cli); the console script is eidetic.\n' >&2
43
42
  return 1
44
43
  }
45
44
 
@@ -65,10 +64,17 @@ EOF
65
64
  }
66
65
 
67
66
  case "${1:-}" in
68
- -h | --help | help | "")
67
+ -h | --help)
69
68
  usage
70
69
  exit 0
71
70
  ;;
71
+ "")
72
+ # A missing query is a usage error, not success. The bareword `help` is
73
+ # a legitimate search term, so it is intentionally NOT a usage alias.
74
+ printf 'error: no query given.\n' >&2
75
+ printf 'hint: recall.sh "<query>" [--mode ...] [--json]; run recall.sh --help for usage.\n' >&2
76
+ exit 1
77
+ ;;
72
78
  esac
73
79
 
74
80
  resolve_eidetic || exit 2
@@ -100,9 +106,12 @@ resolve_scope() {
100
106
  # inline `# comment` or trailing space can't bleed into the scope),
101
107
  # then strip surrounding quotes only — matching the canonical parser
102
108
  # in .claude/skills/cicd/scripts/_resolve-nick.sh.
109
+ # `|| true`: under `set -o pipefail`, `head -n1` closing the pipe
110
+ # early can SIGPIPE `sed`, making the substitution non-zero and
111
+ # aborting the script. An empty parse must yield "" here, not exit.
103
112
  suffix=$(sed -n \
104
113
  's/^[[:space:]]*-\{0,1\}[[:space:]]*suffix:[[:space:]]*\([^[:space:]]*\).*/\1/p' \
105
- "$dir/culture.yaml" | head -n1 | tr -d "\"'")
114
+ "$dir/culture.yaml" | head -n1 | tr -d "\"'" || true)
106
115
  break
107
116
  fi
108
117
  dir=$(dirname "$dir")
@@ -127,7 +136,20 @@ if ! has_flag --scope "$@"; then
127
136
  EIDETIC_SCOPE=$(resolve_scope)
128
137
  if [ -n "$EIDETIC_SCOPE" ]; then
129
138
  SCOPE_ARGS+=(--scope "$EIDETIC_SCOPE")
130
- has_flag --visibility "$@" || SCOPE_ARGS+=(--visibility private)
139
+ # rollout-cli eidetic-memory recipe POLICY OVERRIDE (not eidetic's
140
+ # upstream private default): default to PUBLIC, so a plain recall queries
141
+ # the in-repo public pool (<repo>/.eidetic/memory) this repo writes to.
142
+ # Pass --visibility private to also surface this agent's private ($HOME)
143
+ # notes. The two-store read model reads both dirs regardless.
144
+ has_flag --visibility "$@" || SCOPE_ARGS+=(--visibility public)
145
+ elif ! has_flag --visibility "$@"; then
146
+ # No suffix AND no explicit --visibility: the query runs against
147
+ # eidetic's own default (scope=default, visibility=public), not this
148
+ # agent's private personal scope — so an empty result isn't silently
149
+ # misread. Warn on stderr (stdout stays clean for --json). Warn ONLY
150
+ # here: an explicit --scope (outer guard) or --visibility (this guard) is
151
+ # a deliberate choice, honored verbatim, so either flag silences this.
152
+ printf 'warning: no culture.yaml suffix resolved; querying the public default scope rather than a private personal scope. Pass --scope or --visibility to target deliberately.\n' >&2
131
153
  fi
132
154
  fi
133
155
 
@@ -12,10 +12,11 @@
12
12
  # Upsert is idempotent by id (and dedups by content hash): re-remembering the
13
13
  # same record updates it in place, never duplicates.
14
14
  #
15
- # The store is the files backend at ~/.eidetic/memory by default — a home-dir
16
- # path OUTSIDE any git worktree, so a record Claude remembers is recallable by
17
- # the colleague backend (which runs in throwaway worktrees), and vice versa.
18
- # Set EIDETIC_DATA_DIR to opt out of sharing; use --backend mongo|neo4j (with
15
+ # The store is the files backend. Default location resolves per-operation:
16
+ # PUBLIC records inside a git repo <repo-root>/.eidetic/memory (committed,
17
+ # team-shared); PRIVATE records, or any record outside a git repo
18
+ # $HOME/.eidetic/memory (never committed). An explicit EIDETIC_DATA_DIR still
19
+ # wins and short-circuits to that single dir. Use --backend mongo|neo4j (with
19
20
  # EIDETIC_MONGO_URI / NEO4J_URI) for a server-backed shared store.
20
21
 
21
22
  set -euo pipefail
@@ -40,12 +41,10 @@ resolve_eidetic() {
40
41
  fi
41
42
  dir=$(dirname "$dir")
42
43
  done
43
- cat >&2 <<'EOF'
44
- error: eidetic CLI not found.
45
- hint: install it with `uv tool install eidetic-cli` (or `pipx install eidetic-cli`),
46
- or run from inside the eidetic-cli checkout with `uv` available.
47
- The console script is `eidetic` (dist name: eidetic-cli).
48
- EOF
44
+ # In a vendored copy there is no eidetic-cli checkout to fall back to, so the
45
+ # only honest remedy is to install the CLI. One `error:` + one `hint:` line.
46
+ printf 'error: eidetic CLI not found.\n' >&2
47
+ printf 'hint: install it with: uv tool install eidetic-cli (or pipx install eidetic-cli); the console script is eidetic.\n' >&2
49
48
  return 1
50
49
  }
51
50
 
@@ -60,7 +59,9 @@ Usage:
60
59
 
61
60
  A record needs `id`, `text`, and `type`; `hash` and `metadata` are recommended
62
61
  (hash is derived from text when omitted). Upsert is idempotent by id.
63
- Public data only. Every flag is forwarded verbatim to `eidetic remember`.
62
+ Records default to this agent's PRIVATE personal scope (--scope from the
63
+ culture.yaml suffix); pass --visibility public to contribute to the shared
64
+ public pool. Every flag is forwarded verbatim to `eidetic remember`.
64
65
  See `eidetic explain remember`.
65
66
  EOF
66
67
  }
@@ -72,6 +73,16 @@ case "${1:-}" in
72
73
  ;;
73
74
  esac
74
75
 
76
+ # No record argument AND stdin is an interactive terminal → `eidetic remember`
77
+ # would block forever waiting for NDJSON. Show usage instead of hanging. A piped
78
+ # or redirected stdin (`cat records.ndjson | remember.sh`) is not a TTY and
79
+ # proceeds to the batch path normally.
80
+ if [ "$#" -eq 0 ] && [ -t 0 ]; then
81
+ usage >&2
82
+ printf 'hint: pass a JSON record as an argument, or pipe NDJSON on stdin.\n' >&2
83
+ exit 1
84
+ fi
85
+
75
86
  resolve_eidetic || exit 2
76
87
 
77
88
  # ── default to this agent's PERSONAL, PRIVATE scope (culture.yaml `suffix`) ──
@@ -100,9 +111,12 @@ resolve_scope() {
100
111
  # inline `# comment` or trailing space can't bleed into the scope),
101
112
  # then strip surrounding quotes only — matching the canonical parser
102
113
  # in .claude/skills/cicd/scripts/_resolve-nick.sh.
114
+ # `|| true`: under `set -o pipefail`, `head -n1` closing the pipe
115
+ # early can SIGPIPE `sed`, making the substitution non-zero and
116
+ # aborting the script. An empty parse must yield "" here, not exit.
103
117
  suffix=$(sed -n \
104
118
  's/^[[:space:]]*-\{0,1\}[[:space:]]*suffix:[[:space:]]*\([^[:space:]]*\).*/\1/p' \
105
- "$dir/culture.yaml" | head -n1 | tr -d "\"'")
119
+ "$dir/culture.yaml" | head -n1 | tr -d "\"'" || true)
106
120
  break
107
121
  fi
108
122
  dir=$(dirname "$dir")
@@ -127,7 +141,19 @@ if ! has_flag --scope "$@"; then
127
141
  EIDETIC_SCOPE=$(resolve_scope)
128
142
  if [ -n "$EIDETIC_SCOPE" ]; then
129
143
  SCOPE_ARGS+=(--scope "$EIDETIC_SCOPE")
130
- has_flag --visibility "$@" || SCOPE_ARGS+=(--visibility private)
144
+ # rollout-cli eidetic-memory recipe POLICY OVERRIDE (not eidetic's
145
+ # upstream private default): default to PUBLIC so a plain remember lands
146
+ # in <repo>/.eidetic/memory — committed, team- and mesh-shared. Pass
147
+ # --visibility private to keep a record in $HOME (uncommitted).
148
+ has_flag --visibility "$@" || SCOPE_ARGS+=(--visibility public)
149
+ elif ! has_flag --visibility "$@"; then
150
+ # No suffix AND no explicit --visibility: the record falls back to
151
+ # eidetic's own default (scope=default, visibility=public). Don't let an
152
+ # expected-private record go public silently — warn on stderr (stdout
153
+ # stays clean for --json). Warn ONLY here: an explicit --scope (outer
154
+ # guard) or --visibility (this guard) means the caller chose deliberately
155
+ # and is honored verbatim, so either flag silences this.
156
+ printf 'warning: no culture.yaml suffix resolved; this record falls back to the public default scope. Pass --scope or --visibility to place it deliberately.\n' >&2
131
157
  fi
132
158
  fi
133
159
 
@@ -5,6 +5,45 @@ All notable changes to this project will be documented in this file.
5
5
  Format follows [Keep a Changelog](https://keepachangelog.com/). This project
6
6
  adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.4.0] - 2026-06-24
9
+
10
+ ### Added
11
+
12
+ - **Memory-discipline "Conventions and workflow" section in `CLAUDE.md`** — a
13
+ per-task *recall-before / remember-after* convention (scope localized to this
14
+ repo's nick) so the vendored `remember` / `recall` skills are actually used,
15
+ not just present: `/recall` before non-trivial work to build on prior
16
+ decisions instead of re-deriving them, and `/remember` when a non-obvious
17
+ decision, constraint, fix-and-why, or hard-won gotcha surfaces. The section
18
+ documents this repo's memory as **in-repo and public** — records resolve to
19
+ `<repo-root>/.eidetic/memory` (committed, team- and mesh-shared). Inserted
20
+ idempotently (skipped if already present), slotted under an existing
21
+ "Conventions and workflow" heading when one exists, else appended.
22
+
23
+ ### Changed
24
+
25
+ - **Refreshed the `remember` + `recall` wrappers from eidetic-cli 0.10.0**
26
+ (cite-don't-import) — picks up eidetic's **project-local store default**: the
27
+ files backend now resolves per record by visibility — PUBLIC records inside a
28
+ git repo go to `<repo-root>/.eidetic/memory` (committed, team-shared), PRIVATE
29
+ records (or any record outside a repo) go to `$HOME/.eidetic/memory` (never
30
+ committed), an explicit `EIDETIC_DATA_DIR` still wins, and recall reads both
31
+ stores and merges. Also carries the 0.9.3 hardening (interactive-stdin guard,
32
+ `help` as a search term, SIGPIPE-safe suffix parsing). **Recipe policy
33
+ override (the wrappers here are NOT byte-verbatim):** the injected default
34
+ visibility is flipped from eidetic's `private` to **`public`**, so a plain
35
+ `/remember` lands the note in `./.eidetic/memory` in this repo, kept as part
36
+ of the repo — pass `--visibility private` to route a record to `$HOME`
37
+ instead. `remember` drives `eidetic remember` (idempotent upsert of one JSON
38
+ record or an NDJSON batch on stdin); `recall` drives `eidetic recall` with
39
+ four search modes (exact / approximate / keyword / hybrid). Each `SKILL.md` is
40
+ localized only in the illustrative `--scope <nick>` examples (Provenance keeps
41
+ "First-party to eidetic-cli"). Runtime dep: the `eidetic` CLI on PATH (else a
42
+ local eidetic-cli checkout with `uv`) — **`eidetic >= 0.10.0`** for the
43
+ in-repo routing; on an older CLI the public records still work but are stored
44
+ in `$HOME/.eidetic/memory` instead of in-repo. Propagated by rollout-cli's
45
+ `eidetic-memory` recipe.
46
+
8
47
  ## [0.3.0] - 2026-06-23
9
48
 
10
49
  ### Added
@@ -0,0 +1,56 @@
1
+ # CLAUDE.md — seed / bootstrap placeholder
2
+
3
+ > **This is a self-initializing seed, not a finished runtime prompt.**
4
+ > Run `/init` (or describe the agent's domain to your AI assistant) to
5
+ > re-initialize this file into a full runtime prompt, using the description
6
+ > below and the scaffolded repo as context.
7
+
8
+ ## Agent
9
+
10
+ This repository hosts the **coherence-cli** agent.
11
+
12
+ ## Description
13
+
14
+ Maintains information quality for agentic workflows — assesses the freshness, provenance, fidelity, and task-specific validity of claims, then refreshes or repairs degraded ones before agents consume them.
15
+
16
+ ## Re-init instruction
17
+
18
+ This file is a seed. To expand it into your full runtime prompt:
19
+
20
+ 1. Open this repo in Claude Code (or your preferred AI assistant).
21
+ 2. Run `/init` — the assistant will read the repo, incorporate the description
22
+ above, and replace this seed with a complete `CLAUDE.md`.
23
+ 3. Commit the result.
24
+
25
+ Until you run `/init`, `coherence-cli` satisfies the `steward doctor`
26
+ `prompt-file-present` and `backend-consistency` invariants (a `CLAUDE.md`
27
+ exists and `culture.yaml` declares `backend: claude`) but the prompt is not
28
+ yet tailored to this agent's domain.
29
+
30
+ ## Conventions and workflow
31
+
32
+ **Memory discipline — recall before, remember after.** This repo keeps its
33
+ eidetic memory **in-repo and public**: records resolve to
34
+ `<repo-root>/.eidetic/memory` — committed, and shared with the team and mesh
35
+ peers (the `claude` and `colleague` backends both read the same
36
+ `coherence-cli` scope), so memory travels with the repo, not a private
37
+ home-dir store. Make it a per-task habit:
38
+
39
+ - **`/recall` before you start.** Search the store for the area you're about
40
+ to touch — prior decisions, gotchas, "have we done this before?" — so you
41
+ build on what's already known instead of re-deriving it. Do this before
42
+ non-trivial tasks, not just when asked.
43
+ - **`/remember` when something worth keeping surfaces.** A non-obvious
44
+ decision and its rationale, a constraint, a fix and *why* it was needed, a
45
+ gotcha that cost time, a fact the next session would otherwise re-learn.
46
+ Capture it as it happens, not at the end when it's faded.
47
+
48
+ A plain `/remember` lands the note in `./.eidetic/memory` in this repo — no
49
+ flag needed (the wrappers here default to `--visibility public`; in-repo
50
+ routing needs `eidetic >= 0.10.0`, older CLIs keep records in `$HOME`). Keep
51
+ something out of the committed store only by passing `--visibility private`
52
+ (routes to `$HOME/.eidetic/memory`, never committed); `/recall` reads both
53
+ stores and merges. Don't store what the repo already records (code structure,
54
+ git history, what's already in this file or `CHANGELOG.md`) — store what you'd
55
+ have to re-derive. These are the `recall`/`remember` skills (`.claude/skills/`),
56
+ backed by the `eidetic` store.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coherence-cli
3
- Version: 0.3.0
3
+ Version: 0.4.0
4
4
  Summary: Maintains information quality for agentic workflows — assesses the freshness, provenance, fidelity, and task-specific validity of claims, then refreshes or repairs degraded ones before agents consume them.
5
5
  Project-URL: Homepage, https://github.com/agentculture/coherence-cli
6
6
  Project-URL: Issues, https://github.com/agentculture/coherence-cli/issues
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "coherence-cli"
3
- version = "0.3.0"
3
+ version = "0.4.0"
4
4
  description = "Maintains information quality for agentic workflows — assesses the freshness, provenance, fidelity, and task-specific validity of claims, then refreshes or repairs degraded ones before agents consume them."
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -63,7 +63,7 @@ wheels = [
63
63
 
64
64
  [[package]]
65
65
  name = "coherence-cli"
66
- version = "0.3.0"
66
+ version = "0.4.0"
67
67
  source = { editable = "." }
68
68
 
69
69
  [package.dev-dependencies]
@@ -1,28 +0,0 @@
1
- # CLAUDE.md — seed / bootstrap placeholder
2
-
3
- > **This is a self-initializing seed, not a finished runtime prompt.**
4
- > Run `/init` (or describe the agent's domain to your AI assistant) to
5
- > re-initialize this file into a full runtime prompt, using the description
6
- > below and the scaffolded repo as context.
7
-
8
- ## Agent
9
-
10
- This repository hosts the **coherence-cli** agent.
11
-
12
- ## Description
13
-
14
- Maintains information quality for agentic workflows — assesses the freshness, provenance, fidelity, and task-specific validity of claims, then refreshes or repairs degraded ones before agents consume them.
15
-
16
- ## Re-init instruction
17
-
18
- This file is a seed. To expand it into your full runtime prompt:
19
-
20
- 1. Open this repo in Claude Code (or your preferred AI assistant).
21
- 2. Run `/init` — the assistant will read the repo, incorporate the description
22
- above, and replace this seed with a complete `CLAUDE.md`.
23
- 3. Commit the result.
24
-
25
- Until you run `/init`, `coherence-cli` satisfies the `steward doctor`
26
- `prompt-file-present` and `backend-consistency` invariants (a `CLAUDE.md`
27
- exists and `culture.yaml` declares `backend: claude`) but the prompt is not
28
- yet tailored to this agent's domain.
File without changes
File without changes
File without changes
File without changes