Skip to content

Releases: hannsxpeter/codedna

codedna v1.0.4

Choose a tag to compare

@hannsxpeter hannsxpeter released this 01 Aug 06:21

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.md already 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_target into replace_block instead 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_block with non-default markers. The suite is 36 tests.

codedna v1.0.3

Choose a tag to compare

@hannsxpeter hannsxpeter released this 31 Jul 22:06

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 issue and island no longer count as is-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 UPPER marks a single-word all-caps constant compatible with SCREAMING_SNAKE, mirroring the existing lower note.
  • 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 said AGENTS.md is 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.md matches every other version reference in the skill and the agent support docs, including the release tarball URL.
  • Accept start_marker and end_marker arguments in replace_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

Choose a tag to compare

@hannsxpeter hannsxpeter released this 13 Jul 05:42
639dfe7

Highlights

  • Require explicit installer targets and add Cursor skill install support.
  • Add codedna_wire.py for 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

Choose a tag to compare

@hannsxpeter hannsxpeter released this 11 Jun 07:23
7c9331f

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

Choose a tag to compare

@hannsxpeter hannsxpeter released this 06 Jun 06:58

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 into CLAUDE.md so 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.md template 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.md

See CHANGELOG.md for full details.