59 Commits

Author SHA1 Message Date
alexei.dolgolyov 1f8195b420 docs: rewrite ECC setup guide for v2.0.0
Rewrite ecc-setup-guide.md for ECC v2.0.0: the new `ecc` selective-install
CLI (profiles, auto-update, doctor/repair/plan/catalog/consult), the
skills/ecc + rules/ecc namespaced layout, updated install/model-tier and
Continuous-Learning-v2 sections, and the `--dry-run auto-update` footgun
(it performs a real install). Note 2 of 3 Windows CL-v2 bugs are now fixed
upstream.

Index the guide in README.md and bump the Last updated date.
2026-06-23 11:45:44 +03:00
alexei.dolgolyov 5a17fe960d docs(vex): document history --depth vs index --history-depth
Clarify the two git-history depth knobs and how to keep indexing fast on
repos with thousands of commits:
- vex history --depth N    — query-time walk, per file (caps latency)
- vex index --history-depth N — one-time build, global newest-N (like git log -nN)

Added to the setup example, the .vex.toml history comment, and the command
reference in vex.md.
2026-06-11 01:18:29 +03:00
alexei.dolgolyov 4c3b0188d8 docs(vex): split vex into its own reference, refresh for v1.16.0
- Add vex.md: install (prebuilt binaries + self-update), GPU/CUDA setup,
  jina-code+CUDA recommendation (CUDA essential, too slow on CPU),
  vex mcp install, full command set (bundle/paths/reachable/diff/history,
  search scope+metadata filters), CLAUDE.md integration, caveats
- Shrink claude-code-tools.md section vex to a blurb + links
- Note v1.16.0 capabilities in the vex-vs-ast-index benchmark (not re-benchmarked)
- README: bump date, index vex.md, refresh vex descriptions
2026-06-11 01:11:26 +03:00
alexei.dolgolyov cd0d984930 fix(feature-planner): reconcile merged-but-uncleaned plan folders at session start
Step 9 post-merge cleanup is opt-in and easy to miss (session ends after the merge push, manual merge, or interruption). Once PLAN.md is set to Complete, the folder became invisible to the session-start check, so a skipped cleanup orphaned plans/<feature>/ forever.

Add a session-start reconciliation pass in references/resumability-and-abort.md that detects already-merged features whose plan folder still exists (via Status Complete, 'git branch --merged', or a 'Merge feature/<name>' commit) and re-offers the Step 9 cleanup choices. Cross-referenced from SKILL.md (Key Rule #1, workflow-at-a-glance, Step 9 line) and references/final-review-and-merge.md. Rebuilt the feature-planner.skill bundle.
2026-06-08 17:13:14 +03:00
alexei.dolgolyov 9bc2dd91e2 feat(feature-planner): add pre-implementation plan reviewer + review hardening
Add a super-intensive, adversarial plan-reviewer agent that runs after the plan
is drafted and BEFORE the approval gate, to catch wasteful or wrong design
before any implementation effort is spent. Verdict can be REDESIGN REQUIRED;
findings are sorted into Critical Gaps (block) vs Suggestions (non-blocking) so
the two never get conflated at the approval gate. It must open the codebase to
verify claims (files exist, "no existing impl" holds, "parallel" phases are
disjoint). Conditional trigger: 4+ phases / Orchestrator / Automated /
security|data-sensitive. Wired into SKILL.md, discovery-and-planning (Step 5.5),
agent-spawning (spawn pattern + opus model profile + cost), and
modes-and-strategies (most valuable in Automated mode, the only human gate).

Review hardening also addressed:
- test-writer derives assertions from acceptance criteria, not the diff, so a
  failing test is signal (impl bug) rather than something to "fix" to match
  buggy behavior
- early per-phase security/data pass for sensitive phases (not only final review)
- Outstanding Warnings ledger in PLAN.md so non-blocking warnings can't
  accumulate invisibly across phases
- Automated-mode global circuit breaker (cost / agent-count cap)
- new `data` domain tag carrying a migration-safety addendum

Bump README Last updated date.
2026-06-01 12:25:02 +03:00
alexei.dolgolyov ce86949ded docs(code-search): refresh vex vs ast-index notes for vex 1.9.1 / ast-index 3.41.0
- Re-bench on 2026-05-26 against vex 1.9.1 and ast-index 3.41.0.
- Flag findings that flipped vs the 2026-05-18 snapshot:
  - ast-index Python call graph now populated (was empty in 3.27)
  - vex implementations now handles generic-parameterized subclasses (v1.7.0)
  - vex usages is now AST-precise on T1 languages; ast-index is now the
    textual-match tool, inverting the old precision finding
  - vex now has diff --base <rev>, making the "only ast-index has
    changed --base" finding obsolete
  - vex now ships prebuilt Windows binaries; vex self-update works
- Document new vex 1.5 -> 1.9 commands: diff, paths, reachable, check,
  bundle (symbol/pr-impact/project), eval, self-update, capabilities.
- Add README entry for the doc; it was previously missing from the index.
- Bump README "Last updated" to 2026-05-26.
2026-05-26 12:06:04 +03:00
alexei.dolgolyov 29c316341e docs(vex): note vex is young, verify load-bearing results
Add caveat bullet in the vex section listing known quirks observed during
benchmarking: implementations misses generic-parameterized subclasses,
usages is text-flavored (matches comments/docstrings), Windows install
requires building from source. Recommend cross-checking against ast-index
or Grep for high-stakes queries.
2026-05-18 00:51:06 +03:00
alexei.dolgolyov 0129059830 docs(code-search): add vex vs ast-index benchmark notes
Point-in-time comparison of vex 1.5.0 vs ast-index 3.27.0 on a mixed-language
repo (Python/Kotlin/TS/JS, ~553 files, ~15-17k symbols). Documents:

- Indexing time, footprint, query latency for both tools
- Quality differences on real queries (usages, callers, symbol, semantic)
- Notable findings: ast-index's Python call graph was empty for this repo,
  vex's implementations misses generic-parameterized subclasses, vex usages
  catches comments/docstrings (text-flavored), ast-index uniquely has
  'changed --base <branch>' with no vex equivalent
- Re-run instructions for validating on a different repo or newer versions

Linked from claude-code-tools.md at the end of the vex section so readers
encounter the comparison right after learning about vex. Not surfaced as a
top-level README entry since it's narrower than the other root-level guides.
2026-05-18 00:48:29 +03:00
alexei.dolgolyov fee17cfd8d docs(vex): link to upstream CLAUDE.md snippet + list local deltas
The vex README already maintains a canonical CLAUDE.md integration
snippet, so embedding it here would duplicate and drift. Instead, link
to upstream and list the five additions worth keeping locally: MCP
server line, skip-vex rule, subagent reminder, auto_update accuracy
fix, and the --semantic ONNX download caveat.
2026-05-18 00:24:31 +03:00
alexei.dolgolyov c3eb50f326 docs(tools): add vex — hybrid structural + semantic code search
Documents install on macOS/Linux (Homebrew) and Windows (cargo build
from source — no prebuilt Windows binary in v1.5.0). Includes per-project
bootstrap (.vex.toml with semantic + auto_update, vex index) and the
vex-mcp registration at user scope so it covers all projects.
2026-05-18 00:10:59 +03:00
alexei.dolgolyov 04fe8124fc feat(feature-planner): major refactor — Task-tool spawning, progressive disclosure, bug fixes
SKILL.md shrunk from 1444 → 245 lines via progressive disclosure. Detailed
workflow content extracted into 8 reference files loaded only when needed.

Critical fixes
- Replace `claude -p` bash invocation with Task-tool spawn patterns (broken in
  VS Code extension, no hook/billing/telemetry inheritance, fails on PowerShell)
- Fix malformed Phase Progress Log table (header had 6 cols, row had 5 —
  every PLAN.md generated from the template was broken)
- Drop `/mnt/skills/public/` frontend-design path (Claude.ai sandbox only,
  never existed in CLI / VS Code / JetBrains installs)

High-impact additions
- Resume / abort triggers added to skill description ("continue feature",
  "resume planning", "pick up where we left off")
- Strategy behavior centralized in references/modes-and-strategies.md (was
  duplicated in 5+ places — drift was inevitable)
- references/resumability-and-abort.md adds a clean abort flow
- references/agent-spawning.md covers Task-tool patterns, parallel phases
  with git worktrees, MODEL_PROFILE cost overrides, local-only repo handling,
  and optional code-review-graph MCP integration
- Phase implementer agents now MUST scan CONTEXT.md `## Failed Approaches`
  before writing code (#1 source of duplicated mistakes across phases)
- Test writer / implementer division of labor made explicit (implementer
  writes happy-path tests, test writer adds adversarial coverage)
- New `## New Tooling Introduced` section in CONTEXT.md prevents tech-stack
  staleness across long features
- Local-only repo detection (probe `git remote -v` in Phase 1)
- Cost transparency: documented expected $5-25/feature and added
  `MODEL_PROFILE=fast|balanced|thorough` overrides

Structure
- SKILL.md: thin orchestrator (workflow outline + 18 key rules + agent
  table + Task-tool intro + cost note)
- references/: 8 files for on-demand detail
  - modes-and-strategies.md
  - resumability-and-abort.md
  - discovery-and-planning.md (Phase 0 + plan templates with FIXED table)
  - implementation-loop.md (Phase N + amendments)
  - context-management.md (4-tier system)
  - final-review-and-merge.md (final phase + rollback)
  - agent-spawning.md (Task tool / worktrees / cost / local-only repos)
  - tech-stack-analysis.md (slimmed — detection only, references rules
    system instead of duplicating best practices)
- agents/: phase-implementer.md and phase-implementer-frontend.md updated
  with mandatory Failed Approaches scan; test-writer.md gains division-of-
  labor section; other 5 agents unchanged
2026-05-16 20:02:44 +03:00
alexei.dolgolyov cfdafa9c2b docs(gitea-python-ci-cd): venv install for monorepos + hatchling METADATA workaround
Two real failures hit during notify-bridge v0.8.1 release that section 1
and section 10.1 didn't cover:

1. New section 1.1 — backend pytest in a per-run /tmp/venv. Single-package
   ephemeral runners get away with pip install -e into the toolcache;
   monorepos on persistent Gitea Act Runners (TrueNAS) hit
   "error: uninstall-no-record-file" the second time a broken wheel
   install leaks across runs. Venv per run, fresh site-packages, no leak.

2. New section 10.1.1 — pip wheel --no-deps on hatchling has been
   observed to produce wheels with METADATA missing the Version field.
   importlib.metadata.version() returns None and the UI advertises
   0.0.0+unknown. Defense-in-depth: also expose __version__ from
   __init__.py and pick the max of (metadata, __version__, source
   pyproject) in the resolver. Documented when it's needed and when
   section 10.1 alone is fine.

3. New section 14 troubleshooting entry — quotes the exact pip error
   message and points at section 1.1 (prevention) and a one-shot
   site-packages cleanup recipe (recovery on a stuck runner).
2026-05-16 18:43:55 +03:00
alexei.dolgolyov b9b2c07d2a feat(release-publisher): add pre-release checks, pre-flight guards, CI watch
Substantial revision of dolgolyov-git-release-publisher SKILL.md.

New steps:
- Step 2: pre-flight guards (branch, remote sync, duplicate tag, dirty tree)
- Step 4: pre-release checks - detect project type, inspect CI config, run
  tests/lint/typecheck/build locally before tagging
- Step 15: post-tag CI watch (link-only or poll until run finishes)

Improvements:
- SSH remote support in Step 1
- Detect prerelease tags separately in Step 3
- NUL-separated git log + BREAKING CHANGE: body scan in Step 5
- Prerelease version bumps (-rc.N / -beta.N / -alpha.N) in Step 8
- Mode A (RELEASE_NOTES.md overwrite) vs Mode B (CHANGELOG.md prepend) in Step 11
- Signed-tag detection in Step 14

New edge cases: redo-after-CI-failure flow, signed tags, tag-already-on-HEAD.

Also updates the one-line description in claude-code-tools.md and bumps
README last-updated date.
2026-05-16 18:34:26 +03:00
alexei.dolgolyov 924292fbba docs: add code-review-graph and VS MCP Server to tools list 2026-04-28 20:04:27 +03:00
alexei.dolgolyov a31b1cba2a docs: rename "Trigger Portainer redeploy" step to generic "Trigger redeploy webhook"
The step uses a generic DOCKER_REDEPLOY_WEBHOOK_URL secret and is not
Portainer-specific — any redeploy webhook endpoint works. Rename the step
label, echo line, and warning to reflect the generic nature.
2026-04-21 19:30:14 +03:00
alexei.dolgolyov 93e4b3b5d0 chore: add model routing to feature-planner subagents
Assign explicit model frontmatter to all 8 feature-planner agents:
- sonnet: phase-implementer, phase-implementer-frontend, test-writer, conflict-resolver
- opus: phase-reviewer, final-reviewer, security-reviewer
- haiku: documentation-writer
2026-04-12 21:23:15 +03:00
alexei.dolgolyov 8bdbcec705 docs: add VBS launcher gotchas section (ASCII, CRLF, python.exe)
Three separate things sink portable-Python-on-Windows VBS launchers,
all learned from a debugging session where a wled-screen-controller
shortcut silently did nothing:

1. wscript parses .vbs as ANSI — any UTF-8 byte (em-dash, smart quote,
   even in a comment) triggers a dialog that lies about the cause:
   "Not enough memory resources are available to complete this
   operation." It's actually an encoding parse failure.
2. LF line endings parse inconsistently across WSH versions. Always
   normalize to CRLF.
3. pythonw.exe has null stdout/stderr; libraries that touch those at
   startup (uvicorn, structlog) can crash silently before the first
   log line. python.exe with WshShell.Run cmd, 0, False gives real
   stream handles attached to a hidden window — same visual result,
   reliable startup.

Also added a build-script snippet that normalizes the VBS
automatically so nobody has to remember these rules.
2026-04-08 00:18:55 +03:00
alexei.dolgolyov f4d7f7b6bb docs: warn against deleting .py without compileall + NSIS upgrade safety
Two cooperating bugs we hit in production caused a Pillow version
mismatch error on in-place upgrades. Documenting both so future
projects do not reproduce them.

- Section 4.3: removed the "delete .py, keep .pyc" snippet (no
  compileall step ever ran, so the dist shipped with no .py and no
  .pyc — every package's submodules were unimportable). Added a
  warning box and the correct compileall -b pattern.
- Section 6: NSIS Core section now shows explicit RMDir /r of payload
  dirs before File /r. NSIS File /r is a merge, not a replace, so
  upgrades produce half-old/half-new site-packages.
- Section 14: new troubleshooting entry "Pillow / package version
  mismatch on upgrade" with the symptom, both root causes, and a
  file-state table showing how the mismatch arises.
2026-04-07 23:03:29 +03:00
alexei.dolgolyov 217132c3b7 chore: update feature-planner skill package 2026-04-07 19:41:44 +03:00
alexei.dolgolyov 814cf29f47 docs: add PEP 440 version normalization to section 3
Bare labels like 'dev' or 'nightly' break pip/setuptools when
stamped into pyproject.toml. Add a regex check that falls back
to 0.0.0.dev0 with a warning, plus a callout explaining the
gotcha.
2026-04-07 19:41:39 +03:00
alexei.dolgolyov 0bd4549af0 docs: add gitea-runner.md — Act Runner worker capacity on TrueNAS
How to configure parallel job capacity for Gitea Act Runner:
the CONFIG_FILE env var requirement, custom config.yaml mount,
and capacity tuning.
2026-04-07 19:41:35 +03:00
alexei.dolgolyov 936ee9c317 docs: add gitea-runner.md to README index 2026-04-01 00:43:21 +03:00
alexei.dolgolyov 57f79a7365 docs: add NSIS shortcut icons section to CI/CD guide
Explains how to use custom .ico files for shortcuts instead of
the default Python/WSH icon that appears in the taskbar.
2026-03-28 18:37:51 +03:00
alexei.dolgolyov 4c6908bccb docs: add Docker build workflow to manual build section (6.2) 2026-03-28 13:27:17 +03:00
alexei.dolgolyov b5ed703108 docs: add manual build workflow section (6.2)
Describes a workflow_dispatch-triggered build.yml that produces
CI artifacts without creating a Gitea release. Useful for testing
builds before tagging.
2026-03-27 23:41:09 +03:00
alexei.dolgolyov da4fb51b7c docs: add code signing reference to CI/CD guide
Section 6.1 points to windows-code-signing.md for signing
options and CI examples, rather than duplicating content.
2026-03-26 22:00:17 +03:00
alexei.dolgolyov 7d2b8c562d docs: fix lint warnings and clean up references
- Fix MD060 table separator spacing across all docs
- Fix MD031/MD032 blank lines around code fences and lists
- Fix MD029 ordered list numbering in ecc-setup-guide
- Genericize hardcoded app names (LedGrab/MediaServer → YourApp)
- Remove non-existent `claude skill install` CLI command
- Add staleness warning for ECC Windows fixes
- Add cross-link from windows-code-signing to gitea-python-ci-cd
2026-03-26 21:57:23 +03:00
alexei.dolgolyov 1ed06d54c4 chore: rename PORTAINER_WEBHOOK_URL to DOCKER_REDEPLOY_WEBHOOK_URL
More generic name, not tied to Portainer specifically.
Also update dolgolyov-git-release-publisher skill.
2026-03-26 21:45:59 +03:00
alexei.dolgolyov 9bbe7cb24c docs: add minimal Gitea release workflow document
Standalone workflow: push v* tag → create Gitea release with
optional RELEASE_NOTES.md. No builds or artifacts — just the
release entry. Links to full CI/CD guide for extensions.
2026-03-26 00:34:17 +03:00
alexei.dolgolyov d2d0359902 docs: update release notes pattern to use sparse-checkout
Replace full checkout + find scan with sparse-checkout for
RELEASE_NOTES.md — faster and simpler.
2026-03-25 23:23:39 +03:00
alexei.dolgolyov 807d73dfc3 docs: expand sync rule to require full pattern compliance check
When syncing local repos, verify all documented CI/CD patterns
are adopted — not just the one that triggered the sync.
2026-03-25 23:15:54 +03:00
alexei.dolgolyov 43c84ae515 docs: add optional Portainer webhook auto-deploy to CI/CD guide
Document the pattern for triggering Portainer stack redeploy
after docker push, with graceful skip when webhook is not configured.
2026-03-25 22:54:28 +03:00
alexei.dolgolyov 00919c384c chore: add LocalRepos.md to gitignore and sync rule to CLAUDE.md
LocalRepos.md stores paths to local repos that should be kept in
sync when CI/CD documentation is updated. Added mandatory rule
to CLAUDE.md to propagate relevant changes.
2026-03-25 21:59:47 +03:00
alexei.dolgolyov 4f660ff3b6 chore: rename dolgolyov-claude-facts skill to dolgolyov-dev-facts
Update packaged skill and claude-code-tools reference.
Also update dolgolyov-git-release-publisher skill.
2026-03-25 21:54:47 +03:00
alexei.dolgolyov 137acd0ba8 docs: move packaged skills list from README to claude-code-tools
Skills belong with the other Claude Code extension docs, not in the
top-level index.
2026-03-25 15:55:54 +03:00
alexei.dolgolyov 78149d9e56 docs: add .skill package installation instructions
Document both CLI and manual extraction methods for installing
.skill packages, covering VS Code extension users without the
claude CLI.
2026-03-25 15:55:04 +03:00
alexei.dolgolyov 0daa7f77ff docs: add skills directory and update README index
Add three packaged .skill files and document them in README:
dolgolyov-claude-facts, dolgolyov-git-release-publisher, feature-planner.
2026-03-25 15:50:24 +03:00
alexei.dolgolyov b12b9746c6 docs: add RELEASE_NOTES.md pattern for CI release notes
CI scans for RELEASE_NOTES.md in the repo and prepends its content
to the auto-generated Downloads section in the release body.
2026-03-25 15:33:34 +03:00
alexei.dolgolyov b7d25231b9 docs: add modular usage guide and fix GITEA_TOKEN warning
- Added table showing which sections to use per project type
- Fixed stale warning: "Do NOT use DEPLOY_TOKEN" → "Do NOT use GITEA_TOKEN"
2026-03-25 15:09:28 +03:00
alexei.dolgolyov 4788bdf59d docs: add TrueNAS Docker network fix and package linking notes
- Docker address pool 0.0.0.0 causes unreachable gateway on TrueNAS 25.10
- Gitea requires manual package-repo linking on first push
2026-03-25 15:07:36 +03:00
alexei.dolgolyov 985200691d fix: rename GITEA_TOKEN to DEPLOY_TOKEN
GITEA_TOKEN is a reserved name in Gitea — the UI and API reject it
when creating secrets. Use DEPLOY_TOKEN instead.
2026-03-25 14:37:26 +03:00
alexei.dolgolyov c435a5cf0a docs: add shared build logic pattern and expanded size optimization
- Section 4.3: expanded with NumPy submodule removal, zeroconf cleanup,
  debug symbol stripping, .py source removal, dependency replacement tip
- Section 5.2: new "Shared Build Logic" documenting build-common.sh
  pattern for deduplicating Windows/Linux build scripts
2026-03-25 14:08:32 +03:00
alexei.dolgolyov c65dd349f7 docs: add Gitea duplicate asset prevention pattern
Gitea silently appends duplicate asset names on re-triggered releases.
Added upload_asset helper that deletes existing assets before uploading.
2026-03-25 13:19:38 +03:00
alexei.dolgolyov 0a9c270c6b docs: add version management and in-app auto-update sections
- Section 10: Single source of truth via pyproject.toml + importlib.metadata,
  CI version stamping, Docker build args, updated fallback chain
- Section 11: Release provider abstraction, PEP 440 version normalization,
  install type detection, update service pattern, NSIS silent install,
  portable ZIP/tarball swap scripts, API endpoints, frontend integration
2026-03-25 12:51:07 +03:00
alexei.dolgolyov 7b563c235e docs: add Windows code signing review for open-source projects 2026-03-24 15:14:03 +03:00
alexei.dolgolyov 01c8f71fee fix: add f-string prefix to release body template 2026-03-24 14:26:17 +03:00
alexei.dolgolyov 294c50a2eb docs: expand CI/CD guide with NSIS launch function, VBS fallback, and local build testing
- Replace MUI_FINISHPAGE_RUN_PARAMETERS with RUN_FUNCTION (fixes quoting)
- Add embedded Python fallback to VBS hidden launcher
- Add .onInit file-lock detection for running instances
- Add section 11: local Windows build testing with NSIS
- Expand troubleshooting table with common build/install issues
2026-03-24 12:46:38 +03:00
alexei.dolgolyov e32cf5fe58 docs: add VBS hidden launcher pattern to CI/CD guide
Document the VBS wrapper approach for launching Windows apps
without console window flash. Update NSIS example to prefer
VBS over direct bat execution.
2026-03-23 13:53:19 +03:00
alexei.dolgolyov bf7631b7e4 docs: add NSIS finish page launch option to CI/CD guide
Add optional MUI_FINISHPAGE_RUN pattern for launching the app
after installation completes.
2026-03-23 13:41:41 +03:00
alexei.dolgolyov feb05e1df4 docs: restructure repo — extract tools file, add CLAUDE.md, date-based versioning
- Move ECC setup guide reference from README to claude-code-tools.md
- Add CLAUDE.md with mandatory README sync rule
- Add "Last updated" date to README
- README is now a clean index of repo contents
2026-03-23 02:52:02 +03:00