Files
imbad0202__academic-researc…/CITATION.cff
T

36 lines
1.4 KiB
YAML
Raw Normal View History

# This CITATION.cff describes how to cite this specific version of the software.
# The license field reflects the license of THIS version, not a permanent
# project-wide commitment — future versions may carry different terms.
# See https://citation-file-format.github.io/ for the schema.
cff-version: 1.2.0
title: Academic Research Skills for Claude Code
message: >-
If you use this software in your research, please cite it
using the metadata from this file.
type: software
authors:
- family-names: Wu
given-names: Cheng-I
repository-code: https://github.com/Imbad0202/academic-research-skills
url: https://github.com/Imbad0202/academic-research-skills
abstract: >-
A source-available academic research copilot framework for
noncommercial scholarly use. A suite of Claude Code skills that
assists human researchers through the full research-to-publication
pipeline: research, write, integrity-check, review, revise, finalize.
keywords:
- academic-research
- claude-code
- research-workflow
- literature-review
- citation-verification
- peer-review
- scholarly-writing
license: CC-BY-NC-4.0
version: 3.21.2
date-released: 2026-09-06
# Zenodo concept DOI — represents all versions, always resolves to the latest.
fix: citation-surface version drift + version-consistency invariant 12 (#763) * fix: citation-surface version drift + version-consistency invariant 12 (#754) CITATION.cff and POSITIONING.md citation prose sat at 3.14.0 while the suite moved to 3.20.1 (Zenodo v3.20.1 deposit exists — pure metadata drift). Bump both to 3.20.1 and add lint invariant 12 so the drift class fails CI: CITATION.cff version: and every (Version X.Y.Z) token in POSITIONING.md must equal the suite version. Absent file = skip (invariant-8 posture); present-but-versionless CITATION.cff = error. 6 new mutation tests (53 -> 59), full suite green, real-repo lint green. Closes #754 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011n3WG8Z3Us8fX8UhXS51Ki * refactor: harden invariant 12 per 4-angle cleanup review - CITATION.cff parsed as YAML (regex scrape misread quoted versions as drift); absence now errors like README.md so deletion cannot silently disable the invariant; version goes through the broad-capture + strict-semver idiom (non-canonical reported as such, not as drift) - date-released gated against the CHANGELOG latest-entry date with the invariant-10 +/-7-day window (the second half of the #754 drift) - POSITIONING token uses broad capture + strict validation so v-prefixed or truncated edits error instead of being filtered (pre-#169 lesson) - regex moved to the numbered constants block; helpers moved to the test fixture header; surfaces wired into _write_aligned_fixture so every pass-case exercises invariant 12; class renamed TestCitationSurfaces - 11 targeted tests (53 -> 64), green under pytest and unittest runners Refs #754 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011n3WG8Z3Us8fX8UhXS51Ki * fix: harden invariant 12 date handling per codex review (2 P2) - catch ValueError from PyYAML's timestamp constructor (impossible dates like 2026-02-30 raise ValueError, not YAMLError) so the lint reports instead of crashing - reject datetime values (unquoted timestamps parse as a date SUBCLASS that would TypeError against the date baseline) as not-strict- YYYY-MM-DD errors - 2 regression tests (64 -> 66), both verified red before the fix Refs #754 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011n3WG8Z3Us8fX8UhXS51Ki * fix: require date-released in invariant 12 (codex round-2 P2) An absent or null date-released silently skipped the freshness check, so deleting the field disabled the invariant's date half. Absence now errors (same posture as file absence). 1 regression test (66 -> 67), verified red before the fix. Refs #754 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011n3WG8Z3Us8fX8UhXS51Ki * fix: close invariant-12 silent-pass paths per codex round 3 (2 of 3 P2) - POSITIONING clause captured whole then stripped + strictly validated, so a malformed edit ('(Version 3.4.0 )') errors instead of dropping out of the capture and passing a stale citation - missing-version regression test isolated from the missing-date error (fixture keeps a valid date-released; asserts the specific diagnostic) - duplicate-YAML-key finding adjudicated NOT-FIX under the threat model: last-wins matches every CFF consumer (GitHub cite widget / Zenodo / cffconvert), so a duplicate-key file renders the identical citation everywhere - untidiness, not drift; documented as a known limitation in the checker docstring - 1 new test (68 total), suite green under both runners Refs #754 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011n3WG8Z3Us8fX8UhXS51Ki * fix: catch empty POSITIONING payload + refresh CHANGELOG counts (codex round 4) - capture class widened to [^)]* so '(Version )' reaches strict validation and errors instead of falling out of the capture - CHANGELOG test counts refreshed (53 -> 69) and review provenance updated to the 5-round threat-model-bounded trajectory - 1 regression test, verified red before the fix Refs #754 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011n3WG8Z3Us8fX8UhXS51Ki --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 15:57:19 +08:00
# (Per-release version DOIs are minted by Zenodo automatically; citing the
# concept DOI above always resolves to the latest version.)
doi: 10.5281/zenodo.20696614