From 3dd1c78283069b19c3a36cd73e5c26d45d1ebd40 Mon Sep 17 00:00:00 2001 From: Agents Agent Date: Mon, 29 Jun 2026 09:25:04 +0000 Subject: [PATCH] chore: apply program sweep hygiene --- .gitattributes | 7 + .github/CODEOWNERS | 9 +- .github/workflows/add-to-project.yml | 20 +++ .github/workflows/repository-hygiene.yml | 18 ++ .gitignore | 12 ++ .specify/feature.json | 1 - .specify/scripts/bash/check-prerequisites.sh | 44 ----- .specify/scripts/bash/create-new-feature.sh | 90 ---------- .specify/templates/checklist-template.md | 9 - .specify/templates/spec-template.md | 43 ----- CONTRIBUTING.md | 48 ++---- LICENSE | 65 ++++++-- README.md | 100 ++++-------- SECURITY.md | 41 +++-- VERSIONING.md | 2 +- .../checklists/requirements.md | 14 -- specs/001-api-contract-checks/spec.md | 82 ---------- .../checklists/requirements.md | 14 -- specs/002-build-time-openapi-export/spec.md | 154 ------------------ 19 files changed, 187 insertions(+), 586 deletions(-) create mode 100644 .gitattributes create mode 100644 .github/workflows/add-to-project.yml create mode 100644 .github/workflows/repository-hygiene.yml delete mode 100644 .specify/feature.json delete mode 100755 .specify/scripts/bash/check-prerequisites.sh delete mode 100755 .specify/scripts/bash/create-new-feature.sh delete mode 100644 .specify/templates/checklist-template.md delete mode 100644 .specify/templates/spec-template.md delete mode 100644 specs/001-api-contract-checks/checklists/requirements.md delete mode 100644 specs/001-api-contract-checks/spec.md delete mode 100644 specs/002-build-time-openapi-export/checklists/requirements.md delete mode 100644 specs/002-build-time-openapi-export/spec.md diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..3c72e17 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,7 @@ +* text=auto eol=lf + +*.sh text eol=lf +*.yml text eol=lf +*.yaml text eol=lf +*.json text eol=lf +*.md text eol=lf diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 83cfb67..88e1ebd 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,2 +1,7 @@ -# Default owner for everything in this repo. -* @JorisJonkers-dev +# Required per repository. GitHub does not inherit CODEOWNERS from the org +# defaults repository. +# +# Replace this team with the real owner handle or team if +# @JorisJonkers-dev/maintainers does not exist. + +* @JorisJonkers-dev/maintainers diff --git a/.github/workflows/add-to-project.yml b/.github/workflows/add-to-project.yml new file mode 100644 index 0000000..910ddc5 --- /dev/null +++ b/.github/workflows/add-to-project.yml @@ -0,0 +1,20 @@ +name: 'Add to Project' + +'on': + issues: + types: + - 'opened' + - 'reopened' + - 'transferred' + pull_request_target: + types: + - 'opened' + - 'reopened' + +permissions: + contents: 'read' + +jobs: + add-to-project: + uses: 'JorisJonkers-dev/github-workflows/.github/workflows/add-to-project.yml@v0.8.0' + secrets: 'inherit' diff --git a/.github/workflows/repository-hygiene.yml b/.github/workflows/repository-hygiene.yml new file mode 100644 index 0000000..9bfc5c4 --- /dev/null +++ b/.github/workflows/repository-hygiene.yml @@ -0,0 +1,18 @@ +name: 'Repository Hygiene' + +'on': + pull_request: + types: + - 'opened' + - 'reopened' + - 'synchronize' + - 'labeled' + - 'unlabeled' + +permissions: + contents: 'read' + pull-requests: 'read' + +jobs: + repository-hygiene: + uses: 'JorisJonkers-dev/github-workflows/.github/workflows/repository-hygiene-guard.yml@v0.8.0' diff --git a/.gitignore b/.gitignore index aacad0b..40ce325 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,15 @@ node_modules/ # Logs *.log + +# Planning/scratch artifacts +.specify/ +specs/[0-9][0-9][0-9]-*/ +plans/ +planning/ +scratchpad/ +scratchpads/ +.agent-council/ +*scratchpad*.md +*.scratch.md +*agent-council*.md diff --git a/.specify/feature.json b/.specify/feature.json deleted file mode 100644 index 6eccc05..0000000 --- a/.specify/feature.json +++ /dev/null @@ -1 +0,0 @@ -{"FEATURE_DIR":"/workspace/api-contract-checks/specs/002-build-time-openapi-export","SPEC_FILE":"/workspace/api-contract-checks/specs/002-build-time-openapi-export/spec.md","FEATURE_NUMBER":"002"} diff --git a/.specify/scripts/bash/check-prerequisites.sh b/.specify/scripts/bash/check-prerequisites.sh deleted file mode 100755 index 32db7ef..0000000 --- a/.specify/scripts/bash/check-prerequisites.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -json=false -paths_only=false - -while [ "$#" -gt 0 ]; do - case "$1" in - --json) - json=true - ;; - --paths-only) - paths_only=true - ;; - --help|-h) - echo "Usage: check-prerequisites.sh [--json] [--paths-only]" - exit 0 - ;; - --*) - echo "ERROR: unknown option: $1" >&2 - exit 1 - ;; - esac - shift -done - -script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P) -repo_root=$(git -C "$script_dir/../../.." rev-parse --show-toplevel 2>/dev/null || (CDPATH= cd -- "$script_dir/../../.." && pwd -P)) -feature_json="$repo_root/.specify/feature.json" - -[ -f "$feature_json" ] || { echo "ERROR: .specify/feature.json not found" >&2; exit 1; } - -feature_dir=$(sed -n 's/.*"FEATURE_DIR":"\([^"]*\)".*/\1/p' "$feature_json") -spec_file=$(sed -n 's/.*"SPEC_FILE":"\([^"]*\)".*/\1/p' "$feature_json") - -[ -d "$feature_dir" ] || { echo "ERROR: feature directory not found: $feature_dir" >&2; exit 1; } -[ -f "$spec_file" ] || { echo "ERROR: spec file not found: $spec_file" >&2; exit 1; } - -if [ "$paths_only" = true ] || [ "$json" = true ]; then - printf '{"FEATURE_DIR":"%s","SPEC_FILE":"%s"}\n' "$feature_dir" "$spec_file" -else - printf 'FEATURE_DIR: %s\nSPEC_FILE: %s\n' "$feature_dir" "$spec_file" -fi diff --git a/.specify/scripts/bash/create-new-feature.sh b/.specify/scripts/bash/create-new-feature.sh deleted file mode 100755 index f529e20..0000000 --- a/.specify/scripts/bash/create-new-feature.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -json=false -number="" -description="" - -while [ "$#" -gt 0 ]; do - case "$1" in - --json) - json=true - ;; - --number) - shift - [ "$#" -gt 0 ] || { echo "ERROR: --number requires a value" >&2; exit 1; } - number=$1 - ;; - --help|-h) - echo "Usage: create-new-feature.sh [--json] [--number N] " - exit 0 - ;; - --*) - echo "ERROR: unknown option: $1" >&2 - exit 1 - ;; - *) - if [ -z "$description" ]; then - description=$1 - else - description="$description $1" - fi - ;; - esac - shift -done - -[ -n "$description" ] || { echo "ERROR: feature description is required" >&2; exit 1; } - -script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd -P) -repo_root=$(git -C "$script_dir/../../.." rev-parse --show-toplevel 2>/dev/null || (CDPATH= cd -- "$script_dir/../../.." && pwd -P)) - -slug=$(printf '%s\n' "$description" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/ /g' | awk ' -{ - count = 0 - for (i = 1; i <= NF; i++) { - if ($i == "the" || $i == "and" || $i == "for" || $i == "with" || $i == "from" || $i == "that" || $i == "this" || $i == "into") continue - words[++count] = $i - if (count == 4) break - } - if (count == 0) print "feature" - else { - for (i = 1; i <= count; i++) printf "%s%s", (i == 1 ? "" : "-"), words[i] - printf "\n" - } -}') - -if [ -z "$number" ]; then - highest=0 - for path in "$repo_root"/specs/[0-9][0-9][0-9]-*; do - [ -d "$path" ] || continue - base=$(basename "$path") - current=${base%%-*} - [ "$current" -gt "$highest" ] && highest=$current - done - number=$((highest + 1)) -fi - -feature_number=$(printf '%03d' "$number") -feature_dir="$repo_root/specs/$feature_number-$slug" -spec_file="$feature_dir/spec.md" -template="$repo_root/.specify/templates/spec-template.md" - -mkdir -p "$feature_dir" -if [ ! -f "$spec_file" ]; then - sed \ - -e "s/{{FEATURE_NAME}}/$feature_number-$slug/g" \ - -e "s/{{DATE}}/$(date +%F)/g" \ - "$template" > "$spec_file" -fi - -cat > "$repo_root/.specify/feature.json" <