agentleFS
steerlabssteerlabs/opensteer/.agents/skills/team-server/SKILL.md

team-server

Skill218 starsChanged todayMITView on GitHub

Run the self-hosted team server in Docker for local testing, renew its first-owner setup link, or stop a test stack without touching personal Opensteer.

  • Reads credentials

The file

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 4 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Read Teams for authority and version boundaries and the deployment recipe for production scheduling.

    line 8
  2. Very specific:

    Use a dedicated disposable checkout and fresh volumes.

    line 10
  3. Very specific:

    Use Docker Compose v2. Run bash deploy/team/setup.sh once to create config.env, then edit it for the test HTTPS origin.

    line 15
  4. Distinctive:

    Keep volumes until evidence is collected.

    line 40
  5. Distinctive:

    After success or failure, refresh the IDs for this owned Compose project, then stop and remove each captured container by ID.

    line 60
  6. Distinctive:

    Use Bash for these snippets.

    line 72

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Team server

Read Teams for authority and version boundaries and the deployment recipe for production scheduling. Use a dedicated disposable checkout and fresh volumes. Never use the live install or ~/Opensteer. No screen driving, real accounts or credentials in test fixtures.

Local Docker test

Use Docker Compose v2. Run bash deploy/team/setup.sh once to create config.env, then edit it for the test HTTPS origin. First-owner Account adoption needs a public HTTPS origin (a public hostname or Tailscale Funnel); a private-only tailnet origin cannot pass Account's public proof fetch. No Connect for teams in v1.

setup.sh provisions secrets and runs the newest published release of the configured channel; disable its updater as described in the recipe. To test unreleased source instead, do not run setup.sh again: create the secrets and run locally built images under a local version:

bash deploy/team/secrets.sh init deploy/team/secrets
for target in host team-gateway; do
  docker build -f deploy/container/Containerfile --target "$target" \
    --build-arg OPENSTEER_AGENT_PHONE_MODE=none \
    --build-arg OPENSTEER_RELEASE_VERSION="$(node -p 'require("./package.json").version')" \
    --build-arg OPENSTEER_SOURCE_REVISION="$(git rev-parse HEAD)" \
    -t "ghcr.io/steerlabs/opensteer-team-${target#team-}:local" .
done
export OPENSTEER_TEAM_VERSION=local
source deploy/team/common.sh
compose up -d --wait --pull never
team_container_ids=$(compose ps -aq)

Capture container IDs even after a partial start, and stop only those containers. Keep volumes until evidence is collected. Never stop another test's stack by name.

Renew first-owner setup

The first-owner token expires 24 hours after initialization; restarting with the same token preserves that deadline. On an unclaimed disposable team only, replace the token and recreate the Host, because Compose secrets mount the old file. In the same shell:

bash deploy/team/secrets.sh renew deploy/team/secrets
compose up -d --force-recreate --wait host
team_container_ids=$(compose ps -aq)

Open the new /setup#<token> link privately on the configured team origin; never put it in logs or evidence. Setup cannot claim a server that already has an owner. Re-running setup without rotating the token does not renew an expired admission.

Stop

After success or failure, refresh the IDs for this owned Compose project, then stop and remove each captured container by ID. Do not remove volumes unless disposing of this test's data was requested.

team_container_ids=$(compose ps -aq)
for team_container_id in $team_container_ids; do
  docker stop "$team_container_id"
  docker rm "$team_container_id"
done

Use Bash for these snippets. Report setup, link renewal and shutdown separately; starting containers proves no end-to-end team journey.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.