Apply updated Codex kit guidance
Some checks failed
Codex Template Compliance / template-compliance (push) Failing after 7s
Build / build-windows (push) Successful in 35m52s

This commit is contained in:
MrSphay
2026-05-15 17:39:59 +02:00
parent b130cced60
commit 1ebaab2750
5 changed files with 66 additions and 21 deletions

View File

@@ -33,9 +33,20 @@ cargo clippy --package theseus
Full app packaging may require platform-specific Tauri dependencies. Full app packaging may require platform-specific Tauri dependencies.
## Build Artifacts
Windows installer packages are built by the Gitea runner and published to the generic package registry:
```text
https://git.wilkensxl.de/api/packages/MrSphay/generic/modrinth-plus/latest/Modrinth-Plus-Windows-Setup.exe
```
The workflow also uploads a run artifact for debugging, but workflow-run artifacts are not Package Registry packages.
## Kit Application Notes ## Kit Application Notes
- `AGENTS.md` intentionally preserves the upstream `CLAUDE.md` handoff while adding Modrinth Plus and Gitea workflow-loop rules. - `AGENTS.md` intentionally preserves the upstream `CLAUDE.md` handoff while adding Modrinth Plus and Gitea workflow-loop rules.
- README blueprint generation is not enabled because the upstream Modrinth README should remain authoritative. - README blueprint generation is not enabled because the upstream Modrinth README should remain authoritative.
- Release dry-run automation is deferred until desktop packaging commands and artifact names are finalized. - Release dry-run automation is deferred until desktop packaging commands and artifact names are finalized.
- Template compliance is enabled on push to keep Codex context files present and placeholder-free. - Template compliance is enabled on push to keep Codex context files present and placeholder-free.
- Codex kit metadata should stay in source control for agent work but should not be shipped inside user-facing installers or downloadable package artifacts.

View File

@@ -79,27 +79,34 @@ jobs:
app_version="$(node -p "require('./apps/app-frontend/package.json').version")" app_version="$(node -p "require('./apps/app-frontend/package.json').version")"
package_version="${app_version}-${GITHUB_SHA::7}" package_version="${app_version}-${GITHUB_SHA::7}"
package_name="modrinth-plus" package_name="modrinth-plus"
latest_url="https://git.wilkensxl.de/api/packages/MrSphay/generic/${package_name}/latest" repository_owner="${GITHUB_REPOSITORY%%/*}"
if [ -z "${repository_owner}" ] || [ "${repository_owner}" = "${GITHUB_REPOSITORY}" ]; then
repository_owner="MrSphay"
fi
gitea_server="${GITHUB_SERVER_URL:-https://git.wilkensxl.de}"
gitea_server="${gitea_server%/}"
package_dir="package-registry"
latest_url="${gitea_server}/api/packages/${repository_owner}/generic/${package_name}/latest"
shopt -s nullglob mapfile -d '' artifacts < <(find target/x86_64-pc-windows-msvc/release/bundle/nsis -maxdepth 1 -type f -name '*.exe' -print0)
artifacts=(target/x86_64-pc-windows-msvc/release/bundle/nsis/*.exe)
if [ "${#artifacts[@]}" -eq 0 ]; then if [ "${#artifacts[@]}" -eq 0 ]; then
echo "No Windows installer found to publish" echo "No Windows installer found to publish"
exit 1 exit 1
fi fi
mkdir -p package-latest rm -rf "${package_dir}"
cp "${artifacts[0]}" "package-latest/Modrinth-Plus-Windows-Setup-${package_version}.exe" mkdir -p "${package_dir}/versioned" "${package_dir}/latest"
cp "${artifacts[0]}" "${package_dir}/versioned/Modrinth-Plus-Windows-Setup-${package_version}.exe"
curl --fail-with-body \ curl --fail-with-body \
--user "MrSphay:${REGISTRY_TOKEN}" \ --user "${repository_owner}:${REGISTRY_TOKEN}" \
--upload-file "package-latest/Modrinth-Plus-Windows-Setup-${package_version}.exe" \ --upload-file "${package_dir}/versioned/Modrinth-Plus-Windows-Setup-${package_version}.exe" \
"https://git.wilkensxl.de/api/packages/MrSphay/generic/${package_name}/${package_version}/Modrinth-Plus-Windows-Setup-${package_version}.exe" "${gitea_server}/api/packages/${repository_owner}/generic/${package_name}/${package_version}/Modrinth-Plus-Windows-Setup-${package_version}.exe"
curl --silent --show-error --user "MrSphay:${REGISTRY_TOKEN}" --request DELETE "${latest_url}" || true curl --silent --show-error --user "${repository_owner}:${REGISTRY_TOKEN}" --request DELETE "${latest_url}" || true
cp "${artifacts[0]}" "package-latest/Modrinth-Plus-Windows-Setup.exe" cp "${artifacts[0]}" "${package_dir}/latest/Modrinth-Plus-Windows-Setup.exe"
curl --fail-with-body \ curl --fail-with-body \
--user "MrSphay:${REGISTRY_TOKEN}" \ --user "${repository_owner}:${REGISTRY_TOKEN}" \
--upload-file "package-latest/Modrinth-Plus-Windows-Setup.exe" \ --upload-file "${package_dir}/latest/Modrinth-Plus-Windows-Setup.exe" \
"${latest_url}/Modrinth-Plus-Windows-Setup.exe" "${latest_url}/Modrinth-Plus-Windows-Setup.exe"

View File

@@ -21,6 +21,7 @@ jobs:
missing=0 missing=0
required_files=( required_files=(
"AGENTS.md"
".codex/project.md" ".codex/project.md"
"README.md" "README.md"
) )
@@ -31,11 +32,6 @@ jobs:
"docs/agent-handoff.md" "docs/agent-handoff.md"
) )
if [ ! -f "AGENTS.md" ] && [ ! -f "CLAUDE.md" ]; then
echo "Missing required Codex agent file: AGENTS.md or CLAUDE.md"
missing=1
fi
for file in "${required_files[@]}"; do for file in "${required_files[@]}"; do
if [ ! -f "$file" ]; then if [ ! -f "$file" ]; then
echo "Missing required Codex file: $file" echo "Missing required Codex file: $file"
@@ -57,12 +53,12 @@ jobs:
shell: bash shell: bash
run: | run: |
found=0 found=0
paths=(AGENTS.md README.md SECURITY.md CHANGELOG.md .codex docs blueprint.md blueprint.json) paths=(AGENTS.md README.md SECURITY.md CHANGELOG.md .codex docs .gitea blueprint.md blueprint.json)
pattern='PROJECT_NAME|PROJECT_DESCRIPTION|REPOSITORY_OWNER|REPOSITORY_NAME|PACKAGE_NAME|ARTIFACT_NAME|ARTIFACT_OUTPUT_DIRECTORY|AUTHOR_NAME|PROJECT_STACK|DOWNLOAD_URL|BUILD_COMMAND|TEST_COMMAND|LINT_COMMAND|AUDIT_COMMAND|README_COMMAND|INSTALL_COMMAND|DEV_COMMAND|PACKAGE_MANAGER|PROJECT_VERSION' pattern='PROJECT_NAME|PROJECT_DESCRIPTION|REPOSITORY_OWNER|REPOSITORY_NAME|PACKAGE_NAME|ARTIFACT_NAME|ARTIFACT_OUTPUT_DIRECTORY|AUTHOR_NAME|PROJECT_STACK|DOWNLOAD_URL|CI_URL|RELEASES_URL|BUILD_COMMAND|TEST_COMMAND|LINT_COMMAND|AUDIT_COMMAND|README_COMMAND|INSTALL_COMMAND|DEV_COMMAND|PACKAGE_MANAGER|PROJECT_VERSION|COMMIT_OR_VERSION'
for path in "${paths[@]}"; do for path in "${paths[@]}"; do
[ -e "$path" ] || continue [ -e "$path" ] || continue
if grep -RInE --exclude-dir=.git "$pattern" "$path"; then if grep -RInE --exclude-dir=.git --exclude=template-compliance.yml "$pattern" "$path"; then
found=1 found=1
fi fi
done done
@@ -72,12 +68,30 @@ jobs:
exit 1 exit 1
fi fi
- name: Check README divider convention
shell: bash
run: |
if [ -f blueprint.md ] || [ -f blueprint.json ]; then
if ! grep -q 'template:section-line' blueprint.md 2>/dev/null; then
echo "README blueprint exists but does not use {{ template:section-line }}."
exit 1
fi
fi
- name: Check workflow baseline - name: Check workflow baseline
shell: bash shell: bash
run: | run: |
echo "Detected Gitea workflows:" echo "Detected Gitea workflows:"
find .gitea/workflows -maxdepth 1 -type f -name '*.yml' -print 2>/dev/null || true find .gitea/workflows -maxdepth 1 -type f -name '*.yml' -print 2>/dev/null || true
if [ ! -f ".gitea/workflows/security-scan.yml" ]; then
echo "Recommended workflow missing: .gitea/workflows/security-scan.yml"
fi
if [ ! -f ".gitea/workflows/repo-cleanup.yml" ]; then
echo "Recommended workflow missing: .gitea/workflows/repo-cleanup.yml"
fi
- name: Compliance guidance - name: Compliance guidance
shell: bash shell: bash
run: | run: |
@@ -86,4 +100,10 @@ jobs:
This workflow verifies agent context and template hygiene. It does This workflow verifies agent context and template hygiene. It does
not change files automatically. not change files automatically.
Recommended manual follow-up:
- add missing required Codex context files,
- replace unresolved placeholders,
- keep README blueprint and README output aligned,
- document intentional exceptions in .codex/project.md.
EOF EOF

View File

@@ -7,9 +7,13 @@ This fork adds Modrinth Plus work on top of those rules.
- Preserve upstream Modrinth structure and style unless a Modrinth Plus feature requires a focused change. - Preserve upstream Modrinth structure and style unless a Modrinth Plus feature requires a focused change.
- Keep desktop app work in the existing app boundaries: `apps/app-frontend`, `apps/app`, and `packages/app-lib`. - Keep desktop app work in the existing app boundaries: `apps/app-frontend`, `apps/app`, and `packages/app-lib`.
- Conserve context tokens: search with `rg` or targeted file lists first, read only files needed for the task, summarize large outputs, and avoid generated folders, dependency folders, build outputs, or full logs unless directly relevant.
- Do not commit secrets, `.env` files with private values, private keys, certificates, or tokens. - Do not commit secrets, `.env` files with private values, private keys, certificates, or tokens.
- If `GITEA_TOKEN` is available locally, use it only for read-only Gitea API checks such as private repository metadata and Actions run status. Never print, commit, or store the token. - At the start of every user-requested task, briefly check for upstream repository updates and apply a safe fast-forward pull when the working tree is clean. If local changes exist, do not overwrite them.
- If `GITEA_TOKEN` is available locally, use it only for read-only Gitea API checks such as private repository metadata, package-read visibility, and Actions run status. Never print, commit, or store the token.
- After pushing commits that trigger a Gitea workflow, poll the workflow run until it succeeds. If it fails or is cancelled, inspect the failing job/logs, fix the issue when in scope, push again, and repeat the workflow check loop. Fixing and pushing a workflow failure is not a stopping point. - After pushing commits that trigger a Gitea workflow, poll the workflow run until it succeeds. If it fails or is cancelled, inspect the failing job/logs, fix the issue when in scope, push again, and repeat the workflow check loop. Fixing and pushing a workflow failure is not a stopping point.
- Gitea Actions artifacts are not Gitea Package Registry packages. If the user expects a package/download entry, add or verify an explicit registry publish step and verify the package URL after the workflow succeeds.
- Keep Codex kit files in source control for agents, but exclude them from user-facing installer/package/release artifacts unless the user explicitly asks to ship repository-maintenance files.
## Commands ## Commands
@@ -29,3 +33,5 @@ If local Node/Rust toolchains are unavailable, use the Gitea runner as the autho
- Connected Library supports public HTTPS raw manifest URLs only in v1. - Connected Library supports public HTTPS raw manifest URLs only in v1.
- Keep private Git repository authentication out of Connected Library until token storage is designed. - Keep private Git repository authentication out of Connected Library until token storage is designed.
- Document new external network calls in `docs/security-review.md`. - Document new external network calls in `docs/security-review.md`.
- Keep CI publishing secrets in repository or organization secrets. `REGISTRY_TOKEN` is the Gitea package publishing secret.
- Use URL-safe package filenames when publishing to a registry. Do not put raw artifact names with spaces or punctuation directly into upload URLs.

View File

@@ -6,4 +6,5 @@ All notable Modrinth Plus changes are documented here.
- Added Connected Library for public Git-hosted `modrinth-plus.json` modpack manifests. - Added Connected Library for public Git-hosted `modrinth-plus.json` modpack manifests.
- Added Gitea Actions verification for the Modrinth Plus fork. - Added Gitea Actions verification for the Modrinth Plus fork.
- Added Windows installer publishing to the Gitea generic package registry.
- Added Codex repository context and release/security documentation. - Added Codex repository context and release/security documentation.