eidetic-cli 0.2.0__tar.gz → 0.2.1__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.
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/CHANGELOG.md +10 -0
- eidetic_cli-0.2.1/CLAUDE.md +135 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/PKG-INFO +1 -1
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/explain/catalog.py +4 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/pyproject.toml +1 -1
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/uv.lock +1 -1
- eidetic_cli-0.2.0/CLAUDE.md +0 -28
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/agent-config/SKILL.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/agent-config/scripts/show.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/ask-colleague/SKILL.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/ask-colleague/prompts/explore.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/ask-colleague/prompts/review.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/ask-colleague/prompts/write.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/ask-colleague/scripts/ask-colleague.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/cicd/SKILL.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/cicd/scripts/workflow.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/communicate/SKILL.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/run-tests/SKILL.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/run-tests/scripts/test.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/sonarclaude/SKILL.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/spec-to-plan/SKILL.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/think/SKILL.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/think/scripts/think.sh +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/version-bump/SKILL.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/version-bump/scripts/bump.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills.local.yaml.example +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.flake8 +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.github/workflows/publish.yml +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.github/workflows/tests.yml +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.gitignore +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.markdownlint-cli2.yaml +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/LICENSE +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/README.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/culture.yaml +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/docs/skill-sources.md +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/__init__.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/__main__.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/cli/__init__.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/cli/_commands/__init__.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/cli/_commands/cli.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/cli/_commands/doctor.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/cli/_commands/explain.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/cli/_commands/learn.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/cli/_commands/overview.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/cli/_commands/whoami.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/cli/_errors.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/cli/_output.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/eidetic/explain/__init__.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/sonar-project.properties +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/tests/__init__.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/tests/test_cli.py +0 -0
- {eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/tests/test_cli_introspection.py +0 -0
|
@@ -5,6 +5,16 @@ 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.2.1] - 2026-06-13
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Replaced the CLAUDE.md seed placeholder with a real runtime guide for eidetic-cli: commands (test/lint/rubric gate), the agent-first CLI architecture (register-per-command, the CliError/exit-code contract, stdout/stderr split, the explain catalog), the mesh-identity pairing, the version-bump-every-PR and rubric-gate rules, cite-don't-import skill provenance, the cicd PR lane, and the template rename procedure. Documents the eidetic vs eidetic-cli console-script naming gotcha.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- `explain eidetic` now resolves (added an `("eidetic",)` alias to the explain catalog pointing at the root entry). The agent-first rubric (`teken cli doctor . --strict`) probes the tool by its console-script/package name `eidetic`, but the catalog only carried the `eidetic-cli` self-key, so `explain_self` failed and the lint job went red. Surfaced by CI on this PR; the gap pre-dated it.
|
|
17
|
+
|
|
8
18
|
## [0.2.0] - 2026-06-06
|
|
9
19
|
|
|
10
20
|
### Added
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## What this repo is
|
|
6
|
+
|
|
7
|
+
`eidetic-cli` is an **AgentCulture mesh agent**, scaffolded from
|
|
8
|
+
`culture-agent-template`. Its declared domain is "Agent/CLI providing eidetic
|
|
9
|
+
perfect-recall memory" — but **that memory functionality is not yet built**.
|
|
10
|
+
What exists today is the scaffold: an agent-first introspection CLI (cited from
|
|
11
|
+
[teken](https://github.com/agentculture/teken)'s `afi-cli` `python-cli`
|
|
12
|
+
reference), a mesh identity, the vendored guildmaster skill kit, and a
|
|
13
|
+
build/CI/deploy baseline. New domain code is added as additional noun groups on
|
|
14
|
+
top of this scaffold — it does not replace it.
|
|
15
|
+
|
|
16
|
+
The runtime package has **zero third-party dependencies** (`dependencies = []`).
|
|
17
|
+
`teken` and the lint/test tooling are dev-only. Keep it that way: the
|
|
18
|
+
self-contained runtime is a load-bearing property (the `whoami`/`doctor`
|
|
19
|
+
commands even parse `culture.yaml` by hand rather than import a YAML library).
|
|
20
|
+
|
|
21
|
+
## Commands
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
uv sync # install deps into .venv
|
|
25
|
+
uv run pytest -n auto # full test suite (xdist parallel)
|
|
26
|
+
uv run pytest tests/test_cli.py -v # one file
|
|
27
|
+
uv run pytest -k whoami # one test by keyword
|
|
28
|
+
uv run pytest --cov=eidetic --cov-report=term # with coverage (CI gate: fail_under=60)
|
|
29
|
+
|
|
30
|
+
# Lint — CI runs all of these; run them before opening a PR:
|
|
31
|
+
uv run black --check eidetic tests
|
|
32
|
+
uv run isort --check-only eidetic tests
|
|
33
|
+
uv run flake8 eidetic tests
|
|
34
|
+
uv run bandit -c pyproject.toml -r eidetic
|
|
35
|
+
markdownlint-cli2 "**/*.md" "#node_modules" "#.claude/skills"
|
|
36
|
+
|
|
37
|
+
uv run teken cli doctor . --strict # the agent-first rubric gate CI enforces
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Run the CLI itself with `python -m eidetic <verb>` or `uv run eidetic <verb>`.
|
|
41
|
+
|
|
42
|
+
> **Gotcha:** the console script is named `eidetic` (`[project.scripts]` in
|
|
43
|
+
> `pyproject.toml`), but the dist name, `prog`, and every help/doc string say
|
|
44
|
+
> `eidetic-cli`. So `uv run eidetic-cli …` (as written in some docs) does **not**
|
|
45
|
+
> resolve to a script — use `uv run eidetic …` or `python -m eidetic …`.
|
|
46
|
+
|
|
47
|
+
## Architecture
|
|
48
|
+
|
|
49
|
+
The CLI follows the **agent-first** pattern — every surface is introspectable and
|
|
50
|
+
machine-readable, designed to be driven by another agent, not just a human.
|
|
51
|
+
|
|
52
|
+
- **`eidetic/cli/__init__.py`** — `main(argv)` is the single entry point. It
|
|
53
|
+
builds the argparse tree (`_build_parser`), then `_dispatch` invokes the
|
|
54
|
+
matched handler and translates exceptions to exit codes. Each command lives in
|
|
55
|
+
`eidetic/cli/_commands/<verb>.py` and exposes a `register(subparsers)` function
|
|
56
|
+
called from `_build_parser`. **To add a verb or noun group, write that module
|
|
57
|
+
and add one `register()` call** — the marked spot in `_build_parser` shows
|
|
58
|
+
where.
|
|
59
|
+
|
|
60
|
+
- **Error contract (`eidetic/cli/_errors.py`, `_output.py`)** — every failure
|
|
61
|
+
raises `CliError(code, message, remediation)`; `_dispatch` catches it (and
|
|
62
|
+
wraps any stray exception) so **no Python traceback ever reaches stderr**.
|
|
63
|
+
Argparse's own errors are routed through the same path via
|
|
64
|
+
`_CliArgumentParser.error()`. Exit codes: `0` success, `1` user error,
|
|
65
|
+
`2` environment error, `3+` reserved. This policy lives in exactly one place —
|
|
66
|
+
don't `sys.exit()` or `print` errors from handlers.
|
|
67
|
+
|
|
68
|
+
- **stdout/stderr split (`_output.py`)** — results go to **stdout**, errors and
|
|
69
|
+
diagnostics to **stderr**, never mixed. `--json` mode routes structured
|
|
70
|
+
payloads to the same streams. Every command accepts `--json`; honor it in any
|
|
71
|
+
new command (text errors render `error:` + `hint:` lines; the `hint:` prefix is
|
|
72
|
+
required by the rubric).
|
|
73
|
+
|
|
74
|
+
- **`eidetic/explain/catalog.py`** — `explain <path>` resolves command-path
|
|
75
|
+
tuples to verbatim markdown docs. Adding a verb means adding its catalog entry
|
|
76
|
+
here, plus its line in `eidetic/cli/_commands/learn.py`'s
|
|
77
|
+
`_TEXT`/`_as_json_payload` and `eidetic/cli/_commands/overview.py`'s `_VERBS` —
|
|
78
|
+
these three are the hand-maintained "docs" surface and drift if you forget one.
|
|
79
|
+
|
|
80
|
+
- **Identity (`whoami.py`, `doctor.py`)** — `find_culture_yaml()` walks up from
|
|
81
|
+
the module to locate the repo's own `culture.yaml` (so identity is the agent's,
|
|
82
|
+
not the CWD's), parsed without a YAML dep. In a wheel install no `culture.yaml`
|
|
83
|
+
ships, so these degrade gracefully to defaults / an info-only doctor report.
|
|
84
|
+
`doctor` mirrors the invariants `steward doctor` checks: **prompt-file-present**
|
|
85
|
+
and **backend-consistency** (`claude`→`CLAUDE.md`, `acp`→`AGENTS.md`,
|
|
86
|
+
`gemini`→`GEMINI.md`), plus **skills-present**.
|
|
87
|
+
|
|
88
|
+
## Mesh identity
|
|
89
|
+
|
|
90
|
+
`culture.yaml` declares `suffix: eidetic-cli` / `backend: claude`. The
|
|
91
|
+
`backend: claude` value requires this `CLAUDE.md` to exist at the repo root —
|
|
92
|
+
that pairing is what `doctor` and `steward doctor` enforce. If you change the
|
|
93
|
+
backend, rename the prompt file to match.
|
|
94
|
+
|
|
95
|
+
## Non-negotiable workflow rules
|
|
96
|
+
|
|
97
|
+
- **Bump the version on every PR** — even docs/config/CI-only changes. The
|
|
98
|
+
`version-check` CI job fails the PR if `pyproject.toml`'s version equals
|
|
99
|
+
`main`'s. Use the `version-bump` skill (updates `pyproject.toml` + prepends a
|
|
100
|
+
Keep-a-Changelog entry to `CHANGELOG.md`). `__version__` is read from installed
|
|
101
|
+
package metadata, so the single source of truth is `pyproject.toml`.
|
|
102
|
+
|
|
103
|
+
- **The agent-first rubric must stay green** — `teken cli doctor . --strict`
|
|
104
|
+
gates CI. It checks the seven-bundle rubric (every noun with action-verbs
|
|
105
|
+
exposes `overview`; `learn` is ≥200 chars and names purpose/commands/exit-codes/
|
|
106
|
+
`--json`/`explain`; the error contract; etc.). The empty `cli` noun group exists
|
|
107
|
+
solely to satisfy `overview_cli_noun_exists` — don't delete it.
|
|
108
|
+
|
|
109
|
+
- **Skills are vendored cite-don't-import** — `.claude/skills/` is copied from
|
|
110
|
+
guildmaster (some re-broadcast from `devague`; `ask-colleague` directly from
|
|
111
|
+
`colleague`). **Do not hand-edit vendored skill scripts.** Provenance, the
|
|
112
|
+
re-sync procedure, and tracked local divergences are in
|
|
113
|
+
[`docs/skill-sources.md`](docs/skill-sources.md). `.claude/skills/` is excluded
|
|
114
|
+
from Sonar and markdownlint.
|
|
115
|
+
|
|
116
|
+
## PR lifecycle
|
|
117
|
+
|
|
118
|
+
Branch → implement → bump version → open PR → address review → merge. The `cicd`
|
|
119
|
+
skill is this repo's PR lane (layered on `devex pr`): it adds `status` (SonarCloud
|
|
120
|
+
quality gate + hotspots + unresolved threads) and `await` (blocks until CI
|
|
121
|
+
settles, non-zero exit on a red Sonar gate or unresolved threads). SonarCloud
|
|
122
|
+
gating only engages when `SONAR_TOKEN` is set (fork PRs and token-less repos stay
|
|
123
|
+
green). `sonarclaude` queries the SonarCloud API directly; `communicate` files
|
|
124
|
+
cross-repo issues and posts to mesh channels.
|
|
125
|
+
|
|
126
|
+
## Renaming this template
|
|
127
|
+
|
|
128
|
+
This repo is still a clonable scaffold — the name `eidetic` / `eidetic-cli` is
|
|
129
|
+
hard-coded in ~30 tracked files (package dir, CLI strings, tests,
|
|
130
|
+
`sonar-project.properties`, `README.md`). To find every occurrence before a
|
|
131
|
+
rename:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
git grep -lI 'eidetic'
|
|
135
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: eidetic-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Agent/CLI providing eidetic perfect-recall memory
|
|
5
5
|
Project-URL: Homepage, https://github.com/agentculture/eidetic-cli
|
|
6
6
|
Project-URL: Issues, https://github.com/agentculture/eidetic-cli/issues
|
|
@@ -119,6 +119,10 @@ itself (distinct from the global `overview`, which describes the agent).
|
|
|
119
119
|
ENTRIES: dict[tuple[str, ...], str] = {
|
|
120
120
|
(): _ROOT,
|
|
121
121
|
("eidetic-cli",): _ROOT,
|
|
122
|
+
# The console script / package is named `eidetic` (see [project.scripts]),
|
|
123
|
+
# so `explain eidetic` must also resolve — the agent-first rubric probes the
|
|
124
|
+
# tool by its self-name. Alias it to the same root entry as `eidetic-cli`.
|
|
125
|
+
("eidetic",): _ROOT,
|
|
122
126
|
("whoami",): _WHOAMI,
|
|
123
127
|
("learn",): _LEARN,
|
|
124
128
|
("explain",): _EXPLAIN,
|
eidetic_cli-0.2.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 **eidetic-cli** agent.
|
|
11
|
-
|
|
12
|
-
## Description
|
|
13
|
-
|
|
14
|
-
Agent/CLI providing eidetic perfect-recall memory
|
|
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`, `eidetic-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
|
{eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.claude/skills/agent-config/data/backend-fingerprints.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.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
|
|
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
|
{eidetic_cli-0.2.0 → eidetic_cli-0.2.1}/.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
|
|
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
|