Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -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
17 changes: 17 additions & 0 deletions .mise.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
"""
37 changes: 36 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
@@ -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 <https://lab271.github.io/>, 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
Expand All @@ -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`.

Expand All @@ -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
Expand All @@ -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
<https://github.com/Lab271/lab271.github.io>.

### 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

Expand Down Expand Up @@ -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.
96 changes: 96 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -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).
40 changes: 40 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Contributing

This repository holds the source for <https://lab271.github.io/>, 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.
19 changes: 19 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -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.
21 changes: 16 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 <task>`).
- `.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.
3 changes: 0 additions & 3 deletions docs/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,3 @@ pnpm-debug.log*

# macOS-specific files
.DS_Store

# generated font cache for scripts/refresh-marks.py
scripts/.font-cache/
39 changes: 39 additions & 0 deletions docs/agents/issue-tracker.md
Original file line number Diff line number Diff line change
@@ -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):
<https://github.com/Lab271/lab271.github.io/issues>.

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.