From 537ecdd20603cda2dc6cb126c2acaeb80daf0c5e Mon Sep 17 00:00:00 2001 From: Leo Simons Date: Tue, 11 Aug 2026 20:52:24 +0200 Subject: [PATCH] Fill in the missing project scaffolding The repository had CI, dependabot, mise and agent instructions, but none of the metadata files a public repository is expected to carry. - LICENSE: proprietary, all rights reserved. The repository is public so GitHub Pages can serve the site, not so the source can be reused. The boilerplate's "private and confidential" and "authorized personnel" clauses are dropped, since they are untrue of a world-readable repo, and a trademark clause is added for the Lab271 and Schuberg Philis marks. - CODE_OF_CONDUCT.md: Contributor Covenant 2.0, with enforcement routed to a maintainer or to abuse@schubergphilis.com. - CONTRIBUTING.md: states plainly that this repository does not take third-party contributions, while pointing reports of a broken or inaccurate page at the issue tracker and security reports at SECURITY.md. It also records that the repository list is generated, so getting a project listed means changing that project, not this site. - docs/agents/issue-tracker.md: GitHub issues, with the label set. Issues were disabled on the repository and four of the eight triage labels were missing; both are fixed on the remote side. Two mise tasks close the loop between local and CI: `ci` runs the same install, check and build the workflow runs, and `ci-watch` follows the real run afterwards. `ci` uses a sequential `run` list rather than `depends`, because mise resolves dependencies in parallel and these three are ordered. The root .gitignore covered only .DS_Store; it now also covers mise local overrides, env files and editor cruft. docs/.gitignore still ignored a font cache for scripts/refresh-marks.py, which was retired with the design refresh, so that entry and the leftover cache are gone. AGENTS.md gains the canonical-configuration header, the tasks it was missing, an Agent skills section naming the remote, tracker and labels, and a note that zizmor has to be scoped to .github/ locally: a bare `zizmor .` walks docs/node_modules and reports on vendored packages' own workflows. Assisted-by: Claude:claude-opus-5 Co-Authored-By: lsimons-bot --- .gitignore | 13 ++++- .mise.toml | 17 +++++++ AGENTS.md | 37 +++++++++++++- CODE_OF_CONDUCT.md | 96 ++++++++++++++++++++++++++++++++++++ CONTRIBUTING.md | 40 +++++++++++++++ LICENSE | 19 +++++++ README.md | 21 ++++++-- docs/.gitignore | 3 -- docs/agents/issue-tracker.md | 39 +++++++++++++++ 9 files changed, 275 insertions(+), 10 deletions(-) create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 docs/agents/issue-tracker.md diff --git a/.gitignore b/.gitignore index bbe42e1..8a07a3a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,13 @@ -# macOS-specific files +# mise local overrides (the committed .mise.toml is the shared config) +.mise.local.toml +mise.local.toml + +# environment variables +.env +.env.* + +# editor and OS cruft .DS_Store +.idea/ +.vscode/ +*.swp diff --git a/.mise.toml b/.mise.toml index 8fff695..2b2ace3 100644 --- a/.mise.toml +++ b/.mise.toml @@ -40,3 +40,20 @@ run = "./scripts/refresh-icons.sh" description = "Remove build output and dependencies" dir = "docs" run = "rm -rf dist node_modules .astro" + +# A `run` list, not `depends`: mise runs dependencies in parallel, and these +# three have to happen in this order. +[tasks.ci] +description = "Run everything the CI build job runs, in the same order" +run = ["mise run docs-install", "mise run docs-check", "mise run docs-build"] + +[tasks.ci-watch] +description = "Watch GitHub Actions CI for the current branch; exits non-zero on failure" +run = """ +sleep 5 +remote_url=$(git remote get-url upstream 2>/dev/null || git remote get-url origin) +repo=$(echo "$remote_url" | sed -E 's|^.*github\\.com[:/]||; s|\\.git$||') +run_id=$(gh run list --repo "$repo" --branch "$(git branch --show-current)" --limit 1 --json databaseId --jq '.[0].databaseId') +if [ -z "$run_id" ]; then echo "No run found for current branch on $repo" >&2; exit 1; fi +gh run watch --repo "$repo" --exit-status "$run_id" +""" diff --git a/AGENTS.md b/AGENTS.md index eef9649..1087fec 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,5 +1,8 @@ # AGENTS.md +This file (`AGENTS.md`) is the canonical agent configuration. `CLAUDE.md` is a +symlink to this file. + Source for , an Astro Starlight landing page for the [Lab271](https://github.com/Lab271) organization. The site lives in `docs/` (a subdirectory, not the repo root) so it can sit alongside repo-level tooling like @@ -24,8 +27,15 @@ mise run docs-check # astro check (type/content check) mise run docs-build # static build into docs/dist mise run docs-repos # regenerate docs/src/data/repos.json from the Lab271 org (needs `gh` auth) mise run docs-icons # re-export the favicon PNGs from src/assets/badge.svg (needs librsvg) +mise run docs-preview # serve the production build locally +mise run docs-clean # remove dist, node_modules and .astro +mise run ci # docs-install, docs-check, docs-build, as CI runs them +mise run ci-watch # follow the GitHub Actions run for the current branch ``` +Run `mise run ci` before pushing, and `mise run ci-watch` after. Local success +is not proof the workflow passes; only the real run is. + When starting the dev server directly (not via mise), use background mode: `astro dev --background`, then `astro dev stop`/`status`/`logs`. @@ -49,6 +59,8 @@ When starting the dev server directly (not via mise), use background mode: docs-repos` rather than editing by hand. - `scripts/refresh-repos.mjs`: what `mise run docs-repos` runs. Plain node, no dependencies, so it works without `bun install`. + - `agents/issue-tracker.md`: the issue tracker and labels in use. Not part of + the site; Astro only builds `docs/src/`. - `.github/workflows/ci.yml`: build and type-check on push/PR, plus a `zizmor` job auditing the workflows themselves. - `.github/workflows/deploy.yml`: builds and publishes `docs/dist` to GitHub @@ -60,6 +72,26 @@ When starting the dev server directly (not via mise), use background mode: afterwards instead of relying on the push event. - `.github/dependabot.yml`: weekly updates for the `docs/` bun lockfile and the GitHub Actions used in workflows. +- `LICENSE`: proprietary, all rights reserved. The repository is public so + GitHub Pages can serve it, not so it can be reused. +- `CONTRIBUTING.md`: this repository does not take third-party contributions. + Issues reporting a broken or inaccurate page are still welcome. + +## Agent skills + +### Git remote + +Use GitHub with the `gh` CLI. The remote is +. + +### Issue tracker + +Use GitHub issues. See `docs/agents/issue-tracker.md`. + +### Triage labels + +Use needs-triage, needs-info, ready-for-agent, ready-for-human, wontfix. See +`docs/agents/issue-tracker.md`. ## Branding @@ -102,7 +134,10 @@ meantime. The rules that shaped what is here: (customer, demo, infrastructure and thesis repos). `docs-repos` filters to public sources, and hand-written sections must do the same. - Third-party GitHub Actions are pinned to a full commit SHA with a trailing - `# vX.Y.Z` comment; Dependabot bumps them. + `# vX.Y.Z` comment; Dependabot bumps them. Audit with + `GH_TOKEN=$(gh auth token) zizmor --collect=all --strict-collection .github/` + and scope it to `.github/`: a bare `zizmor .` walks `docs/node_modules` and + reports on vendored dependencies' own workflows. - `@astrojs/check` doesn't yet support TypeScript's native (7.x) compiler API, so `docs/package.json` pins `typescript` to `^6`. See `.github/dependabot.yml` for the corresponding ignore rule. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..a52e5d0 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,96 @@ +# Code of Conduct + +## Our Goal + +We aim to make participation in our community a harassment-free experience +for everyone. + +We aim to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Any conduct which could reasonably be considered inappropriate in a +professional setting is unacceptable. + +## Moderation + +Community leaders should take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the ability to remove or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and should communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to [@lsimons](https://github.com/lsimons) or, if you would rather not go to an individual maintainer, to [abuse@schubergphilis.com](mailto:abuse@schubergphilis.com). Complaints will be reviewed and investigated. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved for a specified period of time. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the Contributor Covenant, version 2.0, +available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..fea5ccb --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,40 @@ +# Contributing + +This repository holds the source for , the Lab271 +open source landing page. It is maintained by Schuberg Philis and is **not +open to third-party contributions**: it is a company-branded page, and its +content and design are ours to decide. + +That does not mean feedback is unwelcome. Two things are useful: + +- **Something on the page is wrong, broken or out of date.** Open an + [issue](https://github.com/Lab271/lab271.github.io/issues). Wrong links, + a project described inaccurately, a broken layout and accessibility + problems are all worth reporting. +- **You found a security problem.** Do not open an issue. Follow + [SECURITY.md](SECURITY.md) instead. + +Note that the list of repositories on the page is generated, not hand-written. +It comes from the public, licensed repositories in the +[Lab271](https://github.com/Lab271) organization, refreshed weekly by +`.github/workflows/refresh-repos.yml`. To get a project listed or delisted, +change the repository itself (its visibility, license or description) rather +than this site. + +Everyone taking part is expected to follow the +[Code of Conduct](CODE_OF_CONDUCT.md). Anything in this repository is governed +by its [License](LICENSE). + +## For maintainers + +Setup, tasks and layout are in [README.md](README.md); the branding rules and +the conventions an agent needs are in [AGENTS.md](AGENTS.md). + +- Work on a branch and open a pull request; `main` is what deploys. +- `mise run ci` runs the same install, type-check and build that + `.github/workflows/ci.yml` runs. Run it before pushing. +- After pushing, `mise run ci-watch` follows the real run. +- Keep this repository structurally aligned with its sibling, + [schubergphilis.github.io](https://github.com/schubergphilis/schubergphilis.github.io): + same layout, same tasks, same workflows, diverging only on branding and + content. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7f80102 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Proprietary License + +Copyright 2026 Schuberg Philis B.V. All rights reserved. + +This repository is published publicly so that the site it builds can be +served from GitHub Pages. Publication does not grant a license to reuse it. + +No part of this repository may be copied, modified, distributed, +sublicensed, published, or used in any form, in whole or in part, without +the prior written permission of the copyright holder. + +The Lab271 and Schuberg Philis names, logos, wordmarks and other brand +assets in this repository are trademarks of Schuberg Philis B.V. and are +not licensed for use. + +The software is provided "as is", without warranty of any kind, express +or implied. + +For permissions or inquiries, contact the copyright holder. diff --git a/README.md b/README.md index 103283d..2964d4c 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,12 @@ mise run docs-install # bun install mise run docs-dev # dev server at http://localhost:4321/ mise run docs-build # static build into docs/dist mise run docs-repos # regenerate the repo list from the Lab271 org +mise run ci # install, check and build, exactly as CI does +mise run ci-watch # follow the GitHub Actions run for the current branch ``` +`mise tasks` lists all of them. + ## Publish Every push to `main` runs `.github/workflows/deploy.yml`, which builds @@ -32,13 +36,20 @@ The Pages source must be set to "GitHub Actions" in the repository settings. - `docs/`: the Astro Starlight site. Landing page: `docs/src/content/docs/index.mdx`. - `.mise.toml`: pinned tools and dev/build tasks (run with `mise run `). -- `.github/workflows/`: `ci.yml` (build and check on PRs) and `deploy.yml` - (publish on push to main). +- `.github/workflows/`: `ci.yml` (build and check on PRs), `deploy.yml` + (publish on push to main) and `refresh-repos.yml` (weekly repo-list refresh). -Branding follows the Lab271 brand kit; see [AGENTS.md](AGENTS.md) for the rules -the theme implements. +Branding follows the Lab271 design refresh; see [AGENTS.md](AGENTS.md) for the +rules the theme implements. ## Contributing This repository is maintained by Schuberg Philis and is not open to -third-party contributions. +third-party contributions. Reports of a broken or inaccurate page are welcome: +see [CONTRIBUTING.md](CONTRIBUTING.md), and +[SECURITY.md](SECURITY.md) for anything security-related. + +## License + +Proprietary, all rights reserved. See [LICENSE](LICENSE). The repository is +public so GitHub Pages can serve the site, not so the source can be reused. diff --git a/docs/.gitignore b/docs/.gitignore index 148f96b..6240da8 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -19,6 +19,3 @@ pnpm-debug.log* # macOS-specific files .DS_Store - -# generated font cache for scripts/refresh-marks.py -scripts/.font-cache/ diff --git a/docs/agents/issue-tracker.md b/docs/agents/issue-tracker.md new file mode 100644 index 0000000..9e0da9f --- /dev/null +++ b/docs/agents/issue-tracker.md @@ -0,0 +1,39 @@ +# Issue tracker: GitHub + +Issues for this project are managed as GitHub issues. + +The issues live in the same remote as the source code (the GitHub default): +. + +Use the `gh` CLI for all operations. + +You can learn about the `gh` issue CLI with `gh issue --help`. + +Note this file sits at `docs/agents/` for consistency with the other +Schuberg Philis repositories. `docs/` is also the Astro site root here, but +Astro only builds `docs/src/`, so nothing in `docs/agents/` is published. + +## Labels + +The following issue labels are used: + +``` +NAME DESCRIPTION COLOR +bug Something isn't working #d73a4a +documentation Improvements or additions to documentation #0075ca +enhancement New feature or request #a2eeef +needs-triage Maintainer needs to evaluate this issue #e6e6fa +needs-info Waiting on reporter for more information #e6e6fa +ready-for-agent Fully specified, ready for an autonomous agent #e6e6fa +ready-for-human Requires human implementation #e6e6fa +wontfix This will not be worked on #ffffff +``` + +The repository also carries GitHub's stock labels (`duplicate`, +`good first issue`, `help wanted`, `invalid`, `question`) and two applied by +automation to pull requests (`dependencies`, `javascript`). Prefer the set +above when triaging. + +`good first issue` and `help wanted` are misleading here: this repository is +not open to third-party contributions (see `CONTRIBUTING.md`). Do not apply +them.