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
5 changes: 2 additions & 3 deletions .claude/agents/ci-watcher.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,8 @@ git -C <repo> rev-parse <branch>
```

Compare that against the head SHA in the pull request data. A push takes a moment to register,
so poll `get_check_runs` every 30 seconds until runs appear. If nothing has appeared after a
few minutes, say so and stop: on a fork, workflows stay disabled until they are enabled once in
the Actions tab, and that is a setup problem no amount of waiting fixes.
so poll `get_check_runs` until runs appear. If nothing has appeared after a few minutes, say so
and stop: a push that starts no checks is a setup problem no amount of waiting fixes.

## Watch

Expand Down
11 changes: 4 additions & 7 deletions .claude/skills/crypter-change/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,16 +119,13 @@ the same way twice, a failure the plan did not anticipate, or anything that read
rather than wrong code. Three attempts is a limit, not a quota to spend.

Stop immediately, without spending an attempt, where `ci-watcher` reports that no run appeared
for the commit. Workflows stay disabled on a new fork until they are enabled once in its Actions
tab, and that is a setup problem.
for the commit. Nothing to fix has been established yet, and a push that starts no checks is a
setup problem rather than a code one.

## 8. Report

- The fork pull request URL and whether its checks are green. It is a draft; taking it out of
draft is the user's.
- The pull request URL and whether its checks are green. It is a draft; taking it out of draft
is the user's.
- What each fix attempt changed, where any ran.
- Anything the implementer could not do, and any drift the auditor flagged.
- What you rejected in triage that the user might disagree with, and where `triage.md` is.

The upstream pull request is a separate one against `Crypter-File-Transfer/Crypter`, since the
base repository is fixed when a pull request is created. The description is ready to paste.
31 changes: 19 additions & 12 deletions .claude/skills/crypter-step-open-pull-request/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
name: crypter-step-open-pull-request
description: Push a branch the pipeline built in the container to the fork and open or update its draft pull request. Invoked as /crypter-step-open-pull-request {run-id} {branch} by the crypter-change and crypter-triage-review skills.
description: Push a branch the pipeline built in the container to the repository and open or update its draft pull request. Invoked as /crypter-step-open-pull-request {run-id} {branch} by the crypter-change and crypter-triage-review skills.
---

# Crypter step open pull request

Take the branch the container built and put it on the fork, with a draft pull request open
Take the branch the container built and put it on the repository, with a draft pull request open
against it.

Safe to run repeatedly on the same branch. Each run pushes whatever commits the container has
Expand All @@ -25,30 +25,37 @@ git -c protocol.ext.allow=user fetch \
`protocol.ext.allow` is passed per command and stays out of your config. **If this fails, stop
and say so** — the branch is the whole deliverable.

## 2. Push to the fork
## 2. Push to the repository

`origin` is the org repository, the same one the container cloned and the same one the pull
request opens against. Confirm that before pushing anything:

```bash
git fetch upstream
git push origin upstream/stable:refs/heads/stable
git push origin {branch}
git remote get-url origin
```

The first push keeps the fork's `stable` level with the org repository, so the pull request
compares against current code.
**If it is not `Crypter-File-Transfer/Crypter`, stop and say so.** A checkout wired up
differently — a fork on `origin`, or the org on some other remote — pushes the branch somewhere
the pull request will not find it.

```bash
git fetch origin
git push origin {branch}
```

## 3. Open or update the pull request

Where a pull request for `{branch}` is already open, the push has updated it and there is
nothing more to do. Say which one it was.

Otherwise open it against the fork, base `stable`, as a draft, using whatever GitHub access this
session has — the `gh` CLI, or the GitHub MCP server's `create_pull_request`.
Otherwise open it against `Crypter-File-Transfer/Crypter`, base `stable`, as a draft, using
whatever GitHub access this session has — the `gh` CLI, or the GitHub MCP server's
`create_pull_request`.

It stays a draft. Taking it out of draft is the user's.

Take the title and description from the report of whoever built the branch. Write the
description for the org repository's reviewers, since it carries over when the upstream pull
request is opened.
description for the reviewers who will read it on that pull request.

## 4. Report

Expand Down
3 changes: 1 addition & 2 deletions .claude/skills/crypter-step-plan/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,10 @@ it goes to `crypter-change`, to a person, or nowhere.
## 1. Sync

```bash
git fetch upstream
git fetch origin
```

Read the code at `upstream/stable`, the commit a build branches from.
Read the code at `origin/stable`, the commit a build branches from.

## 2. Understand before deciding

Expand Down
19 changes: 9 additions & 10 deletions Documentation/Development/Agentic Development Pipeline.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,15 @@ uncommitted work on your machine.
The container does hold your Claude Code credential, in the `crypter-pipeline-claude` volume,
and its network egress is open. Treat it as a trust boundary rather than a sandbox.

When `/crypter-change` finishes you have a fork pull request to read; opening one against the org
repository is something you do by hand afterwards.
The branch is pushed to the org repository and the pull request opens against it, base `stable`,
the same route a branch of your own takes. `/crypter-change` leaves you a draft pull request to
read.

The org repository therefore has two names in this pipeline. Your session reaches it as `origin`,
the remote your checkout already has. The container reaches it as `upstream`, the name its clone
gives the one remote it has, chosen so that a remote with no push url reads as one. Host-side
skills say `origin` and container-side skills say `upstream`; both mean
`Crypter-File-Transfer/Crypter`.

This document covers the setup you need before the container will start.

Expand Down Expand Up @@ -138,14 +145,6 @@ into.
Swap `up -d` for `down` to stop it. The named volumes outlive the container, so the next `up`
reuses the workspace and your Claude Code credentials.

## Enable Actions on your fork

GitHub disables workflows on new forks. Until you turn them on, pushing a branch runs nothing,
and `/crypter-change` stops at the CI stage reporting that no run ever appeared.

Open the **Actions** tab on your fork and use the button confirming you want to run workflows.
You only do this once.

## What is in the container

The image is published by the org at `ghcr.io/crypter-file-transfer/crypter-devcontainer`, and
Expand Down