Skip to content

Add YAML/Ansible linting, CI, and Claude tooling#182

Merged
kennedydane merged 8 commits into
masterfrom
dane/linting-ci-and-claude-setup
Jul 3, 2026
Merged

Add YAML/Ansible linting, CI, and Claude tooling#182
kennedydane merged 8 commits into
masterfrom
dane/linting-ci-and-claude-setup

Conversation

@kennedydane

Copy link
Copy Markdown
Collaborator

Summary

Adds YAML + Ansible linting to the repo, brings the whole tree to a clean pass, wires up CI, and adds Claude Code tooling to keep it that way and make adding software easy.

Two commits for reviewability:

  1. Lint configs + tree cleanup — the mechanical/behaviour-preserving changes and the correctness fixes (large but verified as a semantic no-op where mechanical).
  2. CI + Claude tooling — the new files only.

Linting

  • ansible/.yamllint owns YAML validity/style; ansible/.ansible-lint targets the production profile with a fully documented skip_list for deliberately-deferred rules (var-naming, multi-template task names, and build-from-source patterns: no-changed-when, command-instead-of-*, latest[git], no-handler).
  • Run locally: cd ansible && uv run yamllint . && uv run ansible-lint.
  • Went from ~3,294 ansible-lint findings → 0; yamllint clean.

Real bugs the linters caught (and this PR fixes)

  • vars: written as a list instead of a mapping in 6 container tasks (vep, PopGen_suite, python-ml, python-ml-base, RStudio, ubuntu) — those variables were never being set. Also cleared 57 downstream jinja[invalid] errors.
  • 11 world-writable directory bugs (mode: o=rwx,g=rx,o=rx, a typo for u=rwx).
  • An empty None tag and unquoted min_ansible_version floats.

Mechanical fixes (behaviour-preserving)

  • FQCN for all module actions (~1,414), yes/notrue/false, jinja spacing, task-name casing, block-style version dicts.
  • Symbolic file modes added to ~400 tasks per existing conventions (dirs u=rwx,g=rwx,o=rx, source/data u=rw,g=r,o=r, mode: preserve when copying prebuilt binaries so exec bits survive). No unquoted octal.

Tooling

  • CI (.github/workflows/lint.yml) runs the same two linters on push/PR.
  • Lint-on-edit hook (.claude/hooks/lint-yaml.sh) runs yamllint on every edited ansible/**/*.y*ml.
  • /add-software skill scaffolds a compiled or containerised package end-to-end; /lint skill runs/explains the checks.
  • CLAUDE.md gains a Linting & CI section. Personal .claude/settings.local.json stays gitignored.

Follow-ups (not in this PR)

  • Hand-polish the 126 multi-template task names (currently skipped, cosmetic only).
  • Pin latest[git] clones to specific refs (needs per-repo tags).

🤖 Generated with Claude Code

kennedydane and others added 2 commits July 3, 2026 14:04
Introduce yamllint and ansible-lint configs (in ansible/ so ansible.cfg
supplies module/role context) and fix the tree to pass ansible-lint's
production profile and yamllint cleanly (from ~3,294 findings to 0).

Config:
- ansible/.yamllint owns YAML validity/style; relaxed to the repo's
  deliberate long-URL / inline-dict house style, but flags real breakage
  (trailing space, duplicate keys, unquoted octal, missing EOF newline).
- ansible/.ansible-lint targets the production profile with a fully
  documented skip_list for deliberately-deferred rules (var-naming,
  multi-template task names, and build-from-source patterns:
  no-changed-when, command-instead-of-*, latest[git], no-handler).

Mechanical, behaviour-preserving fixes (verified as a semantic no-op):
- FQCN for all module actions (~1,414)
- yes/no -> true/false, jinja spacing, task-name casing
- octal file modes -> symbolic; block-style version dicts

Correctness fixes surfaced by the linters:
- vars written as a list instead of a mapping in 6 container tasks
  (vep, PopGen_suite, python-ml, python-ml-base, RStudio, ubuntu) — the
  variables were never being set; also cleared 57 jinja[invalid] errors
- 11 world-writable directory bugs (mode: o=rwx,g=rx,o=rx typo for u=rwx)
- empty None tag; unquoted min_ansible_version floats

File permissions: added explicit symbolic modes to ~400 tasks following
existing conventions (dirs u=rwx,g=rwx,o=rx; source/data u=rw,g=r,o=r;
mode: preserve when copying prebuilt binaries so exec bits survive).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Tooling to keep the tree clean and make adding software easy for agents
and contributors:

- .github/workflows/lint.yml: runs the same yamllint + ansible-lint
  commands on push/PR.
- .claude/settings.json + .claude/hooks/lint-yaml.sh: PostToolUse hook
  that runs yamllint on every edited ansible/**/*.y*ml for instant
  feedback (full ansible-lint is left to /lint and CI).
- .claude/skills/add-software: scaffolds a compiled or containerised
  package end-to-end (double-tag rule, path vars, checksums, symbolic
  modes, block-style dicts, task skeletons).
- .claude/skills/lint: runs and explains the linters.
- CLAUDE.md: new Linting & CI section documenting the workflow and the
  conventions the linters enforce.
- .gitignore: ignore the ansible-lint runtime cache (ansible/.ansible/).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 3, 2026 12:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces repo-wide YAML/Ansible linting (yamllint + ansible-lint), documents how to run it locally, and wires the same checks into GitHub Actions CI. It also adds Claude Code support files (skills + hook) to help keep the Ansible tree lint-clean over time.

Changes:

  • Add lint configurations (ansible/.yamllint, ansible/.ansible-lint) and update documentation (CLAUDE.md) describing the linting workflow.
  • Apply large-scale mechanical Ansible YAML cleanups (FQCN usage, boolean normalization, mode normalization, task-name reshaping, document headers).
  • Add automation: CI workflow (.github/workflows/lint.yml) and Claude hook/skill files to run linting consistently.

Reviewed changes

Copilot reviewed 207 out of 208 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
CLAUDE.md Documents linting/CI workflow and conventions enforced by linters.
ansible/roles/containers/tasks/main.yml Normalizes include_tasks usage (FQCN) and indentation cleanup.
ansible/roles/containers/tasks/bio/trycycler.yaml Adds document start, FQCN, and mode normalization.
ansible/roles/containers/tasks/bio/TRIBES.yaml Adds document start, FQCN, and mode normalization.
ansible/roles/containers/tasks/bio/proteowizard.yaml Adds document start, FQCN, and mode normalization.
ansible/roles/containers/tasks/bio/pggb.yaml Adds document start, FQCN, formatting, and mode normalization.
ansible/roles/containers/tasks/bio/gatk.yaml Adds document start, FQCN, and mode normalization.
ansible/roles/containers/tasks/bio/ClinSV.yaml Adds document start, FQCN, and mode normalization.
ansible/roles/containers/tasks/bio/bcbio.yaml Adds document start, FQCN, and improves task naming/messages.
ansible/roles/containers/tasks/astro/main.yml Rewrites version vars into block style; uses FQCN include_tasks.
ansible/roles/containers/meta/main.yml Adds document start and quotes min_ansible_version.
ansible/roles/compiled/tasks/main.yml Normalizes include_tasks usage (FQCN) and indentation cleanup.
ansible/roles/compiled/tasks/ilifu/user_tools.yaml Adds FQCN, boolean normalization, and mode normalization.
ansible/roles/compiled/tasks/ilifu/main.yml Normalizes include_tasks (FQCN) and list formatting.
ansible/roles/compiled/tasks/ilifu/disk_management.yaml Adds FQCN, boolean normalization, and formatting cleanup.
ansible/roles/compiled/tasks/common/zstd.yaml Adds document start, FQCN, module naming, and file modes.
ansible/roles/compiled/tasks/common/uv.yaml Adds FQCN and standardizes download/unpack steps and module install.
ansible/roles/compiled/tasks/common/ucx.yaml Adds document start, FQCN, and modes for build steps.
ansible/roles/compiled/tasks/common/squashfuse.yaml Adds document start, FQCN, and module task naming/modes.
ansible/roles/compiled/tasks/common/rustup.yaml Updates to FQCN/boolean normalization and adds module template mode.
ansible/roles/compiled/tasks/common/rust.yaml Updates to FQCN/boolean normalization and adds module template mode.
ansible/roles/compiled/tasks/common/ruby.yaml Adds document start, FQCN, modes, and task-name cleanup.
ansible/roles/compiled/tasks/common/rclone.yaml Adds FQCN, directory modes, and module template mode.
ansible/roles/compiled/tasks/common/perlbrew.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/common/perl.yaml Adds FQCN, task-name cleanup, and module template mode.
ansible/roles/compiled/tasks/common/pandoc.yaml Adds document start, FQCN, fixes directory mode typo, and module mode.
ansible/roles/compiled/tasks/common/openjdk.yaml Adds FQCN, directory modes, and module template mode.
ansible/roles/compiled/tasks/common/openblas.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/common/ollama.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/common/nodejs.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/common/nextflow.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/common/neovim.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/common/mono.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/common/micromamba.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/common/mamba.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/common/latex.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/common/julia.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/common/jre.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/common/jemalloc.yaml Adds document start, FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/common/harfbuzz.yaml Adds document start, FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/common/golang.yaml Adds document start, FQCN, fixes directory mode typo, and module mode.
ansible/roles/compiled/tasks/common/gocryptfs.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/common/githubcli.yaml Adds document start, FQCN, fixes directory mode typo, and module mode.
ansible/roles/compiled/tasks/common/git-lfs.yaml Adds document start, FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/common/gettext.yaml Adds document start, FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/common/fzf.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/common/fribidi.yaml Adds document start, FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/common/fftw.yaml Adds document start, FQCN include_tasks, and module template mode.
ansible/roles/compiled/tasks/common/dotnet.yaml Adds document start, FQCN, fixes directory mode typo, and module mode.
ansible/roles/compiled/tasks/common/cuda.yaml Adds FQCN and reformats long command invocation; module install updated.
ansible/roles/compiled/tasks/common/cmake.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/common/boost.yaml Adds document start, FQCN, and task-name cleanup.
ansible/roles/compiled/tasks/common/apache_spark.yaml Adds document start, FQCN, and download mode.
ansible/roles/compiled/tasks/common/apache_maven.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/common/apache_hadoop.yaml Adds document start, FQCN, and download mode.
ansible/roles/compiled/tasks/common/anaconda.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/yacrd.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/whatshap.yaml Adds FQCN, formatting cleanup, and module template mode.
ansible/roles/compiled/tasks/bio/vip.yaml Adds FQCN, directory modes, and module template mode.
ansible/roles/compiled/tasks/bio/vg.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/vcftools.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/vcfbub.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/varfish.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/trimmomatic.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/trimgalore.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/subread.yaml Adds FQCN, formatting cleanup, and module template mode.
ansible/roles/compiled/tasks/bio/star.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/stacks.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/sra_toolkit.yaml Adds document start, FQCN, fixes directory mode typo, and module mode.
ansible/roles/compiled/tasks/bio/spliceai.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/snpeff.yaml Adds FQCN and download mode.
ansible/roles/compiled/tasks/bio/shapeit5.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/bio/seqkit.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/savvysuite.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/samtools.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/salmon.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/rsem.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/bio/rfmix.yaml Adds FQCN, directory modes, and module template mode.
ansible/roles/compiled/tasks/bio/reviewer.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/pysam.yaml Adds FQCN, formatting cleanup, and module template mode.
ansible/roles/compiled/tasks/bio/PRSice-2.yaml Adds document start, FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/porechop.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/popdel.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/polypolish.yaml Adds document start, FQCN, formatting cleanup, and module template mode.
ansible/roles/compiled/tasks/bio/plink-ng.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/picard.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/panpatch.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/nanostat.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/nanoplot.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/nanofilt.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/nanocomp.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/muscle.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/bio/multiqc.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/mtoolbox.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/miniwdl.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/minimap2.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/bio/meryl.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/merqury.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/medaka.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/mdanalysis.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/mash.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/manta.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/lirical.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/libmaus2.yaml Adds FQCN, directory mode, and naming cleanup.
ansible/roles/compiled/tasks/bio/kraken2.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/bio/iqtree.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/htslib.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/hisat2.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/bio/hifiasm.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/hapgen2.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/bio/glimpse.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/bio/gfaffix.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/GenomeStrip.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/genome_browser.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/gemini.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/gatk.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/fragpipe.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/filtlong.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/fastqc.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/expansionhunter.yaml Adds FQCN, download mode, and module template mode.
ansible/roles/compiled/tasks/bio/exomiser_data.yaml Adds FQCN and download mode; adjusts debug task.
ansible/roles/compiled/tasks/bio/dorado.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/cutadapt.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/cnvpytor.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/chopper.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/cdhit.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/tasks/bio/canvas.yaml Adds FQCN, formatting cleanup, and module template mode.
ansible/roles/compiled/tasks/bio/bwa.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/bracken.yaml Adds document start, FQCN, and module template mode.
ansible/roles/compiled/tasks/bio/bowtie2.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/blast.yaml Adds FQCN/boolean normalization and module template mode.
ansible/roles/compiled/tasks/bio/bismark.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/bedtools.yaml Adds FQCN and uses mode: preserve for copied binaries.
ansible/roles/compiled/tasks/bio/beast2.yaml Adds FQCN and module template mode.
ansible/roles/compiled/tasks/bio/bcftools.yaml Adds FQCN, directory mode, and module template mode.
ansible/roles/compiled/meta/main.yml Adds document start and quotes min_ansible_version.
ansible/roles/all/tasks/main.yml Normalizes become boolean, adds tags, and uses FQCN for file tasks.
ansible/roles/all/meta/main.yml Adds document start and quotes min_ansible_version.
ansible/all.yaml Adds play name and clarifies play purpose.
ansible/.yamllint Introduces yamllint config tuned for repo needs (validity-focused).
ansible/.ansible-lint Introduces ansible-lint production profile config and skip_list rationale.
.gitignore Ignores ansible runtime cache directory.
.github/workflows/lint.yml Adds CI job to run yamllint + ansible-lint via uv.
.claude/skills/lint/SKILL.md Adds /lint skill documenting lint commands and fix guidance.
.claude/settings.json Adds Claude PostToolUse hook configuration.
.claude/hooks/lint-yaml.sh Adds hook script to run yamllint on edited Ansible YAML files.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread ansible/roles/compiled/tasks/common/git-lfs.yaml Outdated
Comment thread ansible/roles/compiled/tasks/bio/vg.yaml Outdated
Comment thread ansible/roles/compiled/tasks/bio/subread.yaml Outdated
Comment thread ansible/roles/compiled/tasks/bio/panpatch.yaml Outdated
Comment thread ansible/roles/compiled/tasks/bio/trimmomatic.yaml Outdated
Comment thread ansible/roles/compiled/tasks/bio/canvas.yaml Outdated
Comment thread ansible/roles/compiled/tasks/common/uv.yaml Outdated
kennedydane and others added 3 commits July 3, 2026 14:17
Address Copilot review feedback:
- Restore natural task names that the mechanical name[template] reword
  had mangled (stray `" "` / `' '` quote fragments and orphaned path
  fragments) in exomiser, kallisto, panpatch, subread, trimmomatic, vg,
  git-lfs, homebrew (treePL/vcflib), and uv. name[template] is skipped in
  the config, so these gain nothing from reordering.
- canvas.yaml: mode u=wrx -> u=rwx (consistent bit ordering).
- uv.yaml: module-file mode u=rw,g=rw,o=r -> u=rw,g=r,o=r (match the
  module-template convention; no group write).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
actions/checkout@v4 -> v5 and astral-sh/setup-uv@v5 -> v8, both of which
run on Node 24, silencing the Node 20 deprecation warning.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@kennedydane

Copy link
Copy Markdown
Collaborator Author

@MikeCTZA you don't have to pretend to look at this. Similar to other PR. But afaik I'm the only one that even uses this repo 😂

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 207 out of 208 changed files in this pull request and generated 2 comments.

Comment thread ansible/roles/compiled/tasks/bio/dorado.yaml Outdated
Comment on lines 13 to 15
- name: "Uncompress {{ the_data.name }}"
debug:
ansible.builtin.debug:
msg: "Remember to decompressing {{ the_data.name }}"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to appproving if this is to changing

kennedydane and others added 3 commits July 3, 2026 14:40
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…plates)

Populate GitHub's community standards, all previously missing:

- LICENSE: MIT, Copyright (c) 2020-2026 ilifu.
- CONTRIBUTING.md: setup (uv, Python 3.13+), the add-software workflow, the
  conventions the linters enforce (double-tag, checksums, symbolic modes,
  FQCN), how to lint, and the PR process.
- CODE_OF_CONDUCT.md: Contributor Covenant 2.1 (enforcement contact left as a
  marked placeholder to fill in later).
- SECURITY.md: private reporting via GitHub advisories; scoped to this repo's
  real surface (committed secrets, checksum integrity, file permissions).
- .github/PULL_REQUEST_TEMPLATE.md: checklist grounded in the repo conventions.
- .github/ISSUE_TEMPLATE/: software-request and bug-report issue forms + config.
- .github/CODEOWNERS: default reviewer.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Agentic Advice: documents the Claude Code tooling (/add-software and /lint
  skills, the lint-on-edit hook, CLAUDE.md, shared vs. local settings).
- Contributing: points to CONTRIBUTING.md, the CoC, and the issue forms.
- License: MIT.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@kennedydane
kennedydane merged commit 5f87487 into master Jul 3, 2026
1 check passed
@kennedydane
kennedydane deleted the dane/linting-ci-and-claude-setup branch July 3, 2026 12:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants