2026-06-15 13:25:56 +08:00
|
|
|
# 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
|
docs(release): v3.21.2 — model currency, checkpoint decision provenance, and CJK title-matching repairs [skip-closes-check] (#822)
Promotes the [Unreleased] block to v3.21.2 (2026-09-06) and aligns every
version-bearing surface, following the v3.21.1 release-prep file set:
CHANGELOG heading (empty [Unreleased] anchor kept), plugin/marketplace
manifests, CITATION.cff, POSITIONING.md, MODE_REGISTRY.md, .claude/CLAUDE.md
(table row, Key Additions, Version Info), academic-pipeline/SKILL.md plus
its content-lock hash, docs/ARCHITECTURE.md current markers, the five
README badges/headings/entries, and the spec-consistency lint pins with
their fixtures.
Claude-Session: https://claude.ai/code/session_011sWwwG3oCbtL4cGhRsr5US
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-06 01:20:39 +09:00
|
|
|
version: 3.21.2
|
|
|
|
|
date-released: 2026-09-06
|
2026-06-15 13:54:12 +08:00
|
|
|
# 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.)
|
2026-06-15 13:54:12 +08:00
|
|
|
doi: 10.5281/zenodo.20696614
|