tensor-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.
Files changed (71) hide show
  1. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/CHANGELOG.md +10 -0
  2. tensor_cli-0.2.1/CLAUDE.md +160 -0
  3. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/PKG-INFO +1 -1
  4. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/pyproject.toml +2 -2
  5. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/uv.lock +31 -31
  6. tensor_cli-0.2.0/CLAUDE.md +0 -28
  7. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/agent-config/SKILL.md +0 -0
  8. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/agent-config/data/backend-fingerprints.yaml +0 -0
  9. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/agent-config/scripts/show.sh +0 -0
  10. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/ask-colleague/SKILL.md +0 -0
  11. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/ask-colleague/prompts/explore.md +0 -0
  12. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/ask-colleague/prompts/review.md +0 -0
  13. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/ask-colleague/prompts/write.md +0 -0
  14. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/ask-colleague/scripts/ask-colleague.sh +0 -0
  15. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/assign-to-workforce/SKILL.md +0 -0
  16. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/assign-to-workforce/scripts/assign-to-workforce.sh +0 -0
  17. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/cicd/SKILL.md +0 -0
  18. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
  19. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
  20. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
  21. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
  22. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/cicd/scripts/workflow.sh +0 -0
  23. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/SKILL.md +0 -0
  24. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
  25. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
  26. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
  27. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
  28. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/scripts/templates/skill-new-brief.md +0 -0
  29. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
  30. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/doc-test-alignment/SKILL.md +0 -0
  31. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/doc-test-alignment/scripts/check.sh +0 -0
  32. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/pypi-maintainer/SKILL.md +0 -0
  33. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/pypi-maintainer/scripts/switch-source.sh +0 -0
  34. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/run-tests/SKILL.md +0 -0
  35. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/run-tests/scripts/test.sh +0 -0
  36. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/sonarclaude/SKILL.md +0 -0
  37. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/sonarclaude/scripts/sonar.sh +0 -0
  38. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/spec-to-plan/SKILL.md +0 -0
  39. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/spec-to-plan/scripts/spec-to-plan.sh +0 -0
  40. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/think/SKILL.md +0 -0
  41. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/think/scripts/think.sh +0 -0
  42. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/version-bump/SKILL.md +0 -0
  43. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills/version-bump/scripts/bump.py +0 -0
  44. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.claude/skills.local.yaml.example +0 -0
  45. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.flake8 +0 -0
  46. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.github/workflows/publish.yml +0 -0
  47. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.github/workflows/tests.yml +0 -0
  48. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.gitignore +0 -0
  49. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/.markdownlint-cli2.yaml +0 -0
  50. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/LICENSE +0 -0
  51. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/README.md +0 -0
  52. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/culture.yaml +0 -0
  53. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/docs/skill-sources.md +0 -0
  54. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/sonar-project.properties +0 -0
  55. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/__init__.py +0 -0
  56. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/__main__.py +0 -0
  57. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/__init__.py +0 -0
  58. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/__init__.py +0 -0
  59. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/cli.py +0 -0
  60. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/doctor.py +0 -0
  61. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/explain.py +0 -0
  62. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/learn.py +0 -0
  63. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/overview.py +0 -0
  64. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_commands/whoami.py +0 -0
  65. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_errors.py +0 -0
  66. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/cli/_output.py +0 -0
  67. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/explain/__init__.py +0 -0
  68. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tensor/explain/catalog.py +0 -0
  69. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tests/__init__.py +0 -0
  70. {tensor_cli-0.2.0 → tensor_cli-0.2.1}/tests/test_cli.py +0 -0
  71. {tensor_cli-0.2.0 → tensor_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
+ ### Fixed
11
+
12
+ - **Console script renamed `tensor` → `tensor-cli`** in `[project.scripts]`. The scaffold bound the executable to `tensor` while the `prog` name, `--help`, explain catalog, tests, and README all used `tensor-cli` — so the installed command didn't match the docs, and the agent-first rubric gate (`teken cli doctor`, which derives the tool name from the first `[project.scripts]` entry) failed `explain_self` (`tensor explain tensor` had no catalog entry). The command is now `tensor-cli` everywhere.
13
+
14
+ ### Changed
15
+
16
+ - **`/init`: expanded `CLAUDE.md` from the bootstrap seed into a full runtime guide.** Documents that the repo is still the `culture-agent-template` scaffold (no tensor-domain logic yet), the CLI dispatch/`register()` architecture, the `CliError` / stdout-stderr / `--json` contracts, the explain catalog, and the load-bearing agent-first rubric (`teken cli doctor . --strict`). Captures the console-script gotcha (the executable is `tensor`, not `tensor-cli`), the version-bump-every-PR + SonarCloud conventions, the cite-don't-import skill-kit rule, and the clone/rename procedure.
17
+
8
18
  ## [0.2.0] - 2026-06-06
9
19
 
10
20
  ### Added
@@ -0,0 +1,160 @@
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 actually is
6
+
7
+ `tensor-cli` is a **clonable AgentCulture mesh-agent template**, scaffolded from
8
+ `culture-agent-template`. Despite the description "Agent/CLI for tensor
9
+ operations and ML tensor manipulation," **no tensor logic exists yet** — the
10
+ codebase is the template baseline: an agent-first CLI (the introspection verbs
11
+ below), a mesh identity, the vendored skill kit, and CI/deploy wiring. The
12
+ tensor domain is the *intended* build, not the current state. Treat domain work
13
+ as greenfield; add it as new noun groups (see "Adding a verb or noun" below).
14
+
15
+ The runtime package (`tensor/`) has **zero third-party dependencies** — keep it
16
+ that way. The CLI is cited (cite-don't-import) from the `teken` `python-cli`
17
+ reference; new code should follow the same patterns rather than pull deps.
18
+
19
+ ## Commands
20
+
21
+ ```bash
22
+ uv sync # create .venv + install (incl. dev group)
23
+ uv run pytest -n auto # full suite (xdist parallel)
24
+ uv run pytest tests/test_cli.py::test_whoami_json # a single test
25
+ uv run pytest -n auto --cov=tensor --cov-report=term # with coverage (CI gate: 60%)
26
+ uv run teken cli doctor . --strict # the agent-first rubric gate CI enforces
27
+ ```
28
+
29
+ Lint (all must pass — CI runs each):
30
+
31
+ ```bash
32
+ uv run black --check tensor tests
33
+ uv run isort --check-only tensor tests
34
+ uv run flake8 tensor tests
35
+ uv run bandit -c pyproject.toml -r tensor
36
+ markdownlint-cli2 "**/*.md" "#node_modules" "#.local" "#.claude/skills" "#.teken"
37
+ ```
38
+
39
+ `markdownlint-cli2` is a Node tool, not part of the uv dev group — install it
40
+ separately (CI pins `npm install -g markdownlint-cli2@0.21.0`). The other four
41
+ come from `uv sync`.
42
+
43
+ ### Running the CLI
44
+
45
+ The console command, the distribution name, the argparse `prog`, the explain
46
+ catalog keys, and `[project.scripts]` all agree on **`tensor-cli`**:
47
+
48
+ ```bash
49
+ uv run tensor-cli whoami # installed console script
50
+ uv run python -m tensor whoami # equivalent (module entry point)
51
+ ```
52
+
53
+ Note the import package is still `tensor/` (so `python -m tensor`), while the
54
+ *command* is `tensor-cli`. The agent-first rubric (`teken cli doctor`) derives
55
+ the tool name from the first `[project.scripts]` entry and runs
56
+ `<name> explain <name>` against the catalog — so that script name **must** match
57
+ a catalog key in `tensor/explain/catalog.py`. If you rename the command, rename
58
+ the catalog key (and `prog`) in the same change or the rubric gate fails.
59
+
60
+ ## Architecture
61
+
62
+ A single argparse tree with a uniform plugin-style registration contract.
63
+
64
+ - **`tensor/cli/__init__.py`** — `main()` → `_build_parser()` → `_dispatch()`.
65
+ Each command module exposes a `register(sub)` that adds its subparser and sets
66
+ `func`. To add a command you import it in `_build_parser()` and call
67
+ `register(sub)` — nothing else is wired.
68
+ - **Error contract (`tensor/cli/_errors.py`)** — every failure raises
69
+ `CliError(code, message, remediation)`. `_dispatch()` catches it (and wraps any
70
+ stray exception) so **no Python traceback ever reaches stderr**. Argparse
71
+ errors are also routed through this: `_CliArgumentParser.error()` overrides the
72
+ default `prog: error:` / exit-2 behaviour and emits the structured form with
73
+ exit 1. Subparsers inherit it via `parser_class=_CliArgumentParser`.
74
+ - **Output contract (`tensor/cli/_output.py`)** — **results to stdout,
75
+ errors/diagnostics to stderr, never mixed.** Text errors render as
76
+ `error: …\nhint: …` (the `hint:` prefix is required by the agent-first rubric).
77
+ `--json` routes structured payloads to the same streams. Every verb takes
78
+ `--json`; honour both modes in any new command.
79
+ - **Exit codes** — `0` success, `1` user error, `2` environment error, `3+`
80
+ reserved. Centralised in `_errors.py`; don't invent ad-hoc codes.
81
+ - **`--json` parse-time peek** — JSON-mode errors can fire *before* `args.json`
82
+ exists (argparse failures). `main()` pre-scans raw argv and sets
83
+ `_CliArgumentParser._json_hint` so even parse errors honour `--json`. Preserve
84
+ this if you touch arg parsing.
85
+ - **Explain catalog (`tensor/explain/`)** — `tensor/explain/catalog.py` is a
86
+ `dict[tuple[str,...], str]` of verbatim markdown keyed by command path;
87
+ `resolve()` looks it up or raises `CliError`. Every noun/verb you add should
88
+ get a matching catalog entry. Note the coverage gap:
89
+ `test_every_catalog_path_resolves` only asserts that the *existing* catalog
90
+ keys resolve — it does **not** verify that every registered command has an
91
+ entry, so a command added without one won't fail that test. Only the rubric's
92
+ `explain_self` (the root command) is enforced in CI; entries for other verbs
93
+ are a convention you must uphold by hand.
94
+
95
+ ### The agent-first rubric (load-bearing)
96
+
97
+ CI gates on `teken cli doctor . --strict`. This is why the introspection verbs
98
+ exist and have specific shapes — don't delete them casually:
99
+
100
+ - `learn` must be ≥200 chars and mention purpose, command map, exit codes,
101
+ `--json`, and `explain`.
102
+ - Any noun with action-verbs must also expose `overview` (this is the entire
103
+ reason the `cli` noun + `cli overview` exist today).
104
+ - Descriptive verbs (`overview`) must **never hard-fail on a bad target** —
105
+ `overview` accepts and ignores a stray positional path so it always exits 0.
106
+ - `doctor` returns the rubric shape `{healthy, checks:[{id,passed,severity,
107
+ message,remediation}]}` and mirrors the invariants `steward doctor` checks
108
+ (prompt-file-present, backend-consistency) plus a skills-present check.
109
+
110
+ ### Adding a verb or noun
111
+
112
+ 1. Create `tensor/cli/_commands/<name>.py` with `register(sub)` + a
113
+ `cmd_<name>(args)->int` handler. Add `--json`; raise `CliError` on failure;
114
+ emit via `_output` helpers.
115
+ 2. Import + `register()` it in `_build_parser()`.
116
+ 3. Add a `catalog.py` entry for its path(s).
117
+ 4. If it's a *noun* with action-verbs, give it an `overview` sub-verb (reuse
118
+ `overview.py`'s `emit_overview` / section helpers, as `cli.py` does).
119
+ 5. Add tests under `tests/` (smoke + `--json` shape).
120
+
121
+ ## Identity & the skill kit
122
+
123
+ - **`culture.yaml`** declares the mesh agent (`suffix: tensor-cli`,
124
+ `backend: claude`). `whoami`/`doctor` parse it *without* a YAML dep by walking
125
+ up from `__file__` and reading the first agent block — keep the parser tolerant
126
+ if you touch `whoami.py`. `backend: claude` requires `CLAUDE.md` to exist
127
+ (the backend-consistency invariant).
128
+ - **`.claude/skills/`** is vendored **cite-don't-import** from `guildmaster`
129
+ (provenance + re-sync procedure in `docs/skill-sources.md`). **Do not edit
130
+ vendored script bodies** — only the documented identifier-only adaptations in
131
+ `SKILL.md`. To update a skill, re-vendor per `docs/skill-sources.md`. Some
132
+ skills need external tools on PATH (`devex`, `agtag`, optionally `colleague`).
133
+
134
+ ## PR / release conventions
135
+
136
+ - **Every PR bumps the version** — even docs/config/CI. CI (`version-check` job)
137
+ blocks merge if `pyproject.toml` version equals `origin/main`. Use the
138
+ `version-bump` skill (updates `pyproject.toml` + prepends to `CHANGELOG.md`).
139
+ - The `cicd` skill is the PR lane (layered on `devex pr`); `cicd await` polls the
140
+ SonarCloud gate + unresolved threads.
141
+ - **SonarCloud coverage requires `relative_files = true`** (already set in
142
+ `[tool.coverage.run]`) so `coverage.xml` paths match `sonar.sources=tensor`;
143
+ absolute paths silently report 0% coverage.
144
+ - Publishing is automatic via PyPI Trusted Publishing on push to `main`
145
+ (`.github/workflows/publish.yml`); PRs publish a `.devN` build to TestPyPI.
146
+
147
+ ## Renaming the template (when cloning to a real agent)
148
+
149
+ The name `tensor-cli` / package `tensor/` is hard-coded in ~100 places. Discover
150
+ every occurrence first:
151
+
152
+ ```bash
153
+ git grep -n 'tensor-cli\|agentculture_tensor-cli\|tensor\b'
154
+ ```
155
+
156
+ Then rename: the `tensor/` package dir, `pyproject.toml` (`name`,
157
+ `[project.scripts]`, `[tool.hatch...]`, coverage `source`, urls), `tests/`,
158
+ `sonar-project.properties` (`projectKey`), all docstrings/prose, and
159
+ `culture.yaml` (`suffix`, `backend`). Re-run `/init` afterward and re-vendor only
160
+ the skills you need.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tensor-cli
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Agent/CLI for tensor operations and ML tensor manipulation
5
5
  Project-URL: Homepage, https://github.com/agentculture/tensor-cli
6
6
  Project-URL: Issues, https://github.com/agentculture/tensor-cli/issues
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tensor-cli"
3
- version = "0.2.0"
3
+ version = "0.2.1"
4
4
  description = "Agent/CLI for tensor operations and ML tensor manipulation"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -20,7 +20,7 @@ Homepage = "https://github.com/agentculture/tensor-cli"
20
20
  Issues = "https://github.com/agentculture/tensor-cli/issues"
21
21
 
22
22
  [project.scripts]
23
- tensor = "tensor.cli:main"
23
+ tensor-cli = "tensor.cli:main"
24
24
 
25
25
  [build-system]
26
26
  requires = ["hatchling"]
@@ -154,37 +154,6 @@ wheels = [
154
154
  { url = "https://files.pythonhosted.org/packages/61/e8/cb8e80d6f9f55b99588625062822bf946cf03ed06315df4bd8397f5632a1/coverage-7.14.0-py3-none-any.whl", hash = "sha256:8de5b61163aee3d05c8a2beab6f47913df7981dad1baf82c414d99158c286ab1", size = 211764, upload-time = "2026-05-10T18:02:29.538Z" },
155
155
  ]
156
156
 
157
- [[package]]
158
- name = "tensor-cli"
159
- version = "0.2.0"
160
- source = { editable = "." }
161
-
162
- [package.dev-dependencies]
163
- dev = [
164
- { name = "bandit" },
165
- { name = "black" },
166
- { name = "flake8" },
167
- { name = "isort" },
168
- { name = "pytest" },
169
- { name = "pytest-cov" },
170
- { name = "pytest-xdist" },
171
- { name = "teken" },
172
- ]
173
-
174
- [package.metadata]
175
-
176
- [package.metadata.requires-dev]
177
- dev = [
178
- { name = "bandit", specifier = ">=1.7.5" },
179
- { name = "black", specifier = ">=23.7.0" },
180
- { name = "flake8", specifier = ">=6.1" },
181
- { name = "isort", specifier = ">=5.12.0" },
182
- { name = "pytest", specifier = ">=8.0" },
183
- { name = "pytest-cov", specifier = ">=4.1" },
184
- { name = "pytest-xdist", specifier = ">=3.0" },
185
- { name = "teken", specifier = ">=0.8" },
186
- ]
187
-
188
157
  [[package]]
189
158
  name = "execnet"
190
159
  version = "2.1.2"
@@ -476,3 +445,34 @@ sdist = { url = "https://files.pythonhosted.org/packages/25/95/3c3eff8e550c1347c
476
445
  wheels = [
477
446
  { url = "https://files.pythonhosted.org/packages/00/2c/ca005d32831d883b10215a1ea31c32197a3a410f6d4ea3516b3d3c6a1183/teken-0.8.0-py3-none-any.whl", hash = "sha256:385a529df5a76adfff56ba5ae191a1bf8a5573f3698da4cc5bf7a2b5ca7cc311", size = 73189, upload-time = "2026-05-22T19:47:53.959Z" },
478
447
  ]
448
+
449
+ [[package]]
450
+ name = "tensor-cli"
451
+ version = "0.2.1"
452
+ source = { editable = "." }
453
+
454
+ [package.dev-dependencies]
455
+ dev = [
456
+ { name = "bandit" },
457
+ { name = "black" },
458
+ { name = "flake8" },
459
+ { name = "isort" },
460
+ { name = "pytest" },
461
+ { name = "pytest-cov" },
462
+ { name = "pytest-xdist" },
463
+ { name = "teken" },
464
+ ]
465
+
466
+ [package.metadata]
467
+
468
+ [package.metadata.requires-dev]
469
+ dev = [
470
+ { name = "bandit", specifier = ">=1.7.5" },
471
+ { name = "black", specifier = ">=23.7.0" },
472
+ { name = "flake8", specifier = ">=6.1" },
473
+ { name = "isort", specifier = ">=5.12.0" },
474
+ { name = "pytest", specifier = ">=8.0" },
475
+ { name = "pytest-cov", specifier = ">=4.1" },
476
+ { name = "pytest-xdist", specifier = ">=3.0" },
477
+ { name = "teken", specifier = ">=0.8" },
478
+ ]
@@ -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 **tensor-cli** agent.
11
-
12
- ## Description
13
-
14
- Agent/CLI for tensor operations and ML tensor manipulation
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`, `tensor-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