Releases: hannsxpeter/codedna
Releases · hannsxpeter/codedna
Release list
codedna v1.0.4
Robustness release. One wiring fix restores a guarantee the docs already made. Nothing here changes a measurement, so profiles generated with 1.0.3 report the same numbers.
Fixed
- Stop the wiring helper from deleting content between an unpaired
<!-- codedna:start -->marker and the real block below it. A file left carrying a start marker with no matching end marker lost everything in between on the second run, including another tool's block and the user's own prose.docs/AGENT_SUPPORT.mdalready stated that the rest of the file is left untouched; now it is. The unpaired marker is left where it sits rather than absorbed.
Changed
- Pass the block markers explicitly from
write_targetintoreplace_blockinstead of letting them fall back to the module constants. Output is byte-identical. The helper no longer assumes the markers it is handed are the ones it was built with. - Correct
skill/SKILL.md, which called the TODO/FIXME figure a density. The stats helper reports a count.
Added
- Add regression tests for the unpaired-marker fix, for a start marker appearing inside the block being replaced, and for
replace_blockwith non-default markers. The suite is 36 tests.
codedna v1.0.3
Accuracy release. Every change below corrects a measurement or a claim that was wrong, so profiles generated with 1.0.2 may report different numbers after upgrading. That is the point.
Fixed
- Fix comment density and code-line counts for Python files that open a multi-line string mid-line (SQL blobs, templates, prompt constants). The closing triple quote was read as the start of a docstring, so the remainder of the file was counted as comment. On codedna's own repository this reported 13.4% comment density against a true 0.9%.
- Count multi-line JSDoc blocks as documentation. Only single-line
/** ... */was recognized, understating doc-comment coverage on any codebase that uses conventional JSDoc. - Stop counting a plain
//aside as a doc comment outside Go. Go keeps//, since that is its documentation convention. - Measure function length in tab-indented Python. Every function in a tab-indented file was reported as one line long.
- Read files with a UTF-8 byte order mark so the first line is not hidden from every pattern.
- Skip minified and generated files, which dominated naming and identifier-length histograms and could invert the reported dominant convention. Skipped files are disclosed in the output.
- Require a word boundary for boolean prefixes, so
issueandislandno longer count asis-prefixed. - Do not count blank lines inside a block comment toward a metric defined as a percentage of non-blank lines.
- Match the
<!-- codedna:start -->and<!-- codedna:end -->markers as a pair when wiring. A stray closing marker earlier in the file made every run append another block. - Preserve indentation after the wired block, and leave instruction files byte-identical when re-wiring. The second run on a fresh repository previously produced a spurious diff.
Changed
- Note in the stats output when
UPPERmarks a single-word all-caps constant compatible withSCREAMING_SNAKE, mirroring the existinglowernote. - Correct
CONTRIBUTING.md, which presented the wiring helper as a read-only sanity check. It writes files, and the instructions now say so and point at a throwaway copy. - Correct
docs/AGENT_SUPPORT.md, which saidAGENTS.mdis created only when no other instruction file exists. It is created or updated either way.
Added
- Add regression tests for every fix above, doubling the suite from 15 tests to 33.
- Add a test asserting the version in
skill/SKILL.mdmatches every other version reference in the skill and the agent support docs, including the release tarball URL. - Accept
start_markerandend_markerarguments inreplace_block. Nothing passes them yet; they exist so a sibling skill can reuse the helper without its markers defaulting to codedna's.
codedna v1.0.2
Highlights
- Require explicit installer targets and add Cursor skill install support.
- Add
codedna_wire.pyfor idempotent project wiring across AGENTS.md, Claude, Gemini, GitHub Copilot, Cursor, and Windsurf/Cascade. - Expand the stats helper with function size, identifier length, boolean-prefix share, TODO/FIXME density, and doc-comment coverage.
- Refresh README, agent support docs, contributing notes, changelog, tests, and CI for the v1.0.2 package.
Verification
- GitHub Actions passed on PR #2.
- Local full suite passed with
python3 -m unittest discover -s tests. - Release archive was extracted and smoke-tested before publishing.
codedna v1.0.1
Summary
- Add portable multi-agent support for Claude Code, Codex, Gemini CLI, GitHub Copilot, Cursor, and Windsurf/Cascade.
- Install codedna as a standard SKILL.md bundle for supported skill hosts.
- Extract the stats helper into a bundled script and add CI, fixtures, and tests.
- Add docs for agent support and release package installation.
Package
- codedna-v1.0.1.tar.gz
Verification
- GitHub Actions passed on PR #1.
- Local py_compile, unittest, installer syntax, diff check, and temp-dir install smoke tests passed.
codedna 1.0.0
codedna 1.0.0, the initial release.
A file-only Claude Code skill that fingerprints a codebase's style so new or AI-written code is indistinguishable from the author's own.
Modes
- Map: scan a repo and generate
CODEDNA.md, and wire an idempotent pointer intoCLAUDE.mdso the profile loads automatically. - Match: write new code that follows the profile, deferring to the local file's dialect on conflicts.
- Check: review a diff or file against the profile and report the AI tells with severity and concrete rewrites.
Also includes
- A 15-entry AI-tells catalog (over-commenting, defensive boilerplate, vocabulary drift, and more), plus a pre-commit self-check list.
- An inlined, stdlib-only stats helper that grounds the profile in real frequencies (naming casing, comment density including doc comments, indentation, quotes).
- A fixed
CODEDNA.mdtemplate that enforces specificity over generic filler.
Install
The codedna.md skill file is attached to this release. Drop it into your skills directory:
cp codedna.md ~/.claude/skills/codedna.mdSee CHANGELOG.md for full details.