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.
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/recall/scripts/recall.sh +35 -13
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/remember/scripts/remember.sh +39 -13
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/CHANGELOG.md +39 -0
- coherence_cli-0.4.0/CLAUDE.md +56 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/PKG-INFO +1 -1
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/pyproject.toml +1 -1
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/uv.lock +1 -1
- coherence_cli-0.3.0/CLAUDE.md +0 -28
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/agent-config/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/agent-config/scripts/show.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/ask-colleague/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/ask-colleague/prompts/explore.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/ask-colleague/prompts/review.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/ask-colleague/prompts/write.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/ask-colleague/scripts/ask-colleague.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/cicd/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/cicd/scripts/workflow.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/recall/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/remember/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/run-tests/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/run-tests/scripts/test.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/sonarclaude/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/spec-to-plan/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/think/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/think/scripts/think.sh +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/version-bump/SKILL.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/version-bump/scripts/bump.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills.local.yaml.example +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.flake8 +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.github/workflows/publish.yml +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.github/workflows/tests.yml +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.gitignore +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/.markdownlint-cli2.yaml +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/LICENSE +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/README.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/__init__.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/__main__.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/__init__.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/__init__.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/cli.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/doctor.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/explain.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/learn.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/overview.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_commands/whoami.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_errors.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/cli/_output.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/explain/__init__.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/coherence/explain/catalog.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/culture.yaml +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/docs/skill-sources.md +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/sonar-project.properties +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/tests/__init__.py +0 -0
- {coherence_cli-0.3.0 → coherence_cli-0.4.0}/tests/test_cli.py +0 -0
- {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
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
#
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
+
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
|
+
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"
|
coherence_cli-0.3.0/CLAUDE.md
DELETED
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/ask-colleague/scripts/ask-colleague.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/fetch-issues.sh
RENAMED
|
File without changes
|
{coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/mesh-message.sh
RENAMED
|
File without changes
|
{coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/post-comment.sh
RENAMED
|
File without changes
|
{coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/communicate/scripts/post-issue.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/doc-test-alignment/scripts/check.sh
RENAMED
|
File without changes
|
|
File without changes
|
{coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/pypi-maintainer/scripts/switch-source.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coherence_cli-0.3.0 → coherence_cli-0.4.0}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|