본문으로 건너뛰기
cccskills
무료GitHub에 공개

dogfooding

Use when deciding WHERE to do work on Syntropic137 itself - "run this through Syntropic", "dispatch a workflow", "should this go in a workspace or local", "kick off a run on the Mini", "dogfood this", "build Syntropic inside Syntropic", "why did the agent's push fail", "can an agent run our QA", "the execution says completed but nothing shipped". Covers what a workspace agent can and cannot do, why `.github/workflows` pushes must come from the local machine, how to write a task prompt that does not repeat a known failure, and how to verify a run actually delivered. Do NOT use for PR/release mechanics (see `devops`), for using the `syn` CLI as an end user (see the syntropic137 plugin skills), or for authoring workflow YAML.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구DockerPlaywright

실행 점수 미검증

설치 방법 보기

포함된 파일(1)

  • SKILL.md10.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Building Syntropic inside Syntropic

Overview

Work on this repo defaults to running through Syntropic on the Mini, not on the laptop. That is the point of the project: the fastest way to find what the platform cannot do is to try to build the platform with it. Every capability gap recorded in this file was found by a run failing, not by reading code.

One deliberate exception, and it is a security boundary rather than a defect: see Principle 2.

Outcomes we are looking for

Outcome 1: the platform is exercised by its own development

Real work is dispatched to Syntropic rather than done locally out of habit.

  • Signal: on any given working day, the most recent execution is hours old at most, not a day.
  • Signal: capability gaps arrive as failed or degraded runs with an execution id attached, not as speculation.

Outcome 2: agents never gain write access to CI

The GitHub App installation cannot modify .github/workflows, and nobody "fixes" that by widening the token.

  • Signal: workflows permission stays off the installation, and workflow changes land in commits pushed from a human-controlled machine.
  • Signal: a task that needs a workflow change is recognised BEFORE the work is done, not after a rejected push.

Outcome 3: a blocker is scoped to what it actually blocks

A narrow failure does not silently become a reason to stop dispatching.

  • Signal: after a run fails on a path restriction, the next dispatch happens the same session.

Outcome 4: a run's outcome is verified, not read off its status

Delivery is confirmed against the artifact that was supposed to exist.

  • Signal: claims like "the workflow fixed it" are accompanied by a PR number or a diff, never by status: completed alone.

Outcome 5: a task is scoped to what a workspace can finish

The limits of the execution environment are known before a run is paid for, not discovered at its last step.

  • Signal: a task requiring Docker or a browser is either adapted or kept local, rather than dispatched and lost.
  • Signal: when a capability gap is hit, it is recorded with the image it was measured against.

Principles

  1. Dispatch by default, and dispatch several at once. Executions are independent and the platform runs them concurrently; three parallel runs cost the same wall-clock as one. Reach for local work when the task is smaller than the cost of describing it, or when it touches the exception below.

  2. Anything touching .github/workflows/ is pushed from the local machine, not by an agent. The App installation deliberately lacks the workflows permission, so a push carrying a workflow change is rejected by GitHub with:

    refusing to allow a GitHub App to create or update workflow `.github/workflows/ci.yml`
    without `workflows` permission
    

    This is a posture decision, not a bug queued for repair. This is a public open-source project, and CI is where release credentials and publish rights live: an agent that can rewrite a workflow can exfiltrate secrets or publish artifacts without review. Granting the scope to unblock one task trades a standing security property for an afternoon's convenience. Tracked in #1024 so the decision is visible rather than folklore.

    In practice: have the agent make and verify the change, then apply and push the workflow part yourself. The agent's diff and its verification output are still the valuable half.

  3. Scope the restriction to the path it names. It rejects pushes touching .github/; it does not restrict packages/, apps/, docs/, justfile or anything else. Reading it as "agents cannot push" costs a day of dispatching, which has already happened once.

  4. Say in the task prompt which failure this run must not repeat. Agents here do good work and fail on the hop nobody described. Naming the specific prior failure - with the command that proves it - is worth more than another paragraph of requirements. A prompt that says "a previous attempt recorded this on an event that is never persisted; verify with git grep before you build on it" prevents a whole class of rework.

  5. Require pasted command output, not a summary. "Tests pass" is unfalsifiable. The agent's report should contain the commands and their real output, so a claim can be checked without re-running everything.

  6. Confirm delivery against the artifact. An execution reports completed when its agent finishes without crashing, including when the agent itself reported failure in prose (#1023). Before believing a run shipped, look for the PR, the branch, or the file. A $4.40 run has already reported three completed phases while producing nothing.

  7. Keep your own record of what you asked. The execution does not store the task prompt (#1030), so the only record of the ask is wherever you wrote it. Until that is fixed, put the task text in the run log or the PR body.

Anti-patterns

Observed while doing this, not hypothetical.

  • A four-hour gap with no executions while the laptop is busy. Usually traceable to one blocked run being read as a general blocker.
  • A task prompt that lists requirements but not the trap. The agent satisfies every stated requirement and lands on the unstated hop. The last three of these were a value written correctly and dropped one layer later.
  • status: completed quoted as evidence of delivery. The status describes the harness, not the outcome.
  • A workflow change attempted inside a workspace. Costs the full run before the push is rejected at the last step. Recognisable in advance: if the diff would touch .github/, split that part out before dispatching.
  • A unit test offered as proof that a value survives to the API. It proves the two objects it constructs, not the wire between them. The persistence hop needs a test that drives the real handler with real repository plumbing.
  • Reading the workspace's git status as clean because a command "should not" write. Verification commands have mutated tracked files here; capture git status --porcelain before and after.

Recommended tools and practices (as of 2026-08-30)

Outcome: the platform is exercised by its own development

  • syn workflow run implement-from-plan -t "<task>" -R syntropic137/syntropic137. The installed implementation workflow: Bootstrap, Implement, Open Draft PR. Ladders up by making dispatch a one-liner, which is what makes it the default.
  • Dispatch two or three at once and monitor them together. Ladders up by making parallelism the habit rather than an optimisation.
  • syn execution show <id> and syn execution list. Ladders up by making a run's cost and phase state checkable without the dashboard.

Outcome: agents never gain write access to CI

  • Split the workflow change out before dispatching. Ladders up by keeping the permission boundary intact without blocking the work.
  • Keep #1024 open as the record of the decision. Ladders up by making the posture auditable rather than tribal knowledge.

Outcome: a run's outcome is verified

  • gh pr list after a run that was supposed to open one. Ladders up by checking the artifact instead of the status.
  • Read the phase artifacts, not just the summary. Agents here report failure honestly in the artifact text even when the platform records success. Ladders up by putting the honest signal in reach.

Outcome: a task is scoped to what a workspace can finish

Measured on the pinned omni-agent-workspace image, 2026-08-30. Re-measure after any PINNED_DIGESTS bump; these are properties of an image, not of the platform:

capabilitystate
just preflight static gates15 of 17 pass
dashboard lint + tsc -b && vite buildworks, 3004 modules
pytest, pyright, ruff, vsa validate, fitness suitework
Docker daemonabsent - no root, cannot start dockerd
check-default-workspace-image, check-pinned-image-channelsfail, both need Docker
full e2e container stacknot possible, same reason
Playwright / headless Chromiumbaked in since toolchain 1.5.0 (AW #33): Playwright 1.63.0 + headless shell, offline, npx --no-install playwright screenshot; a repo pinning another Playwright version will not find its browser. Measured in a live workspace 2026-10-06 (#1028): launches with no install; apps/syn-dashboard-ui/scripts/screenshot.mjs screenshots the built dashboard

Ladders up by letting a task be scoped to what the workspace can finish, instead of discovering the limit after paying for the run.

References

  • #1024 - the workflows permission decision and its options.
  • #1023 - executions report completed when the agent reported failure.
  • #1030 - executions do not record the prompt they were given.
  • #1028 - headless browser QA in the workspace image (shipped in AW #33).
  • .claude/skills/devops/SKILL.md - PR, version and release mechanics.
  • AGENTS.md - just qa-ci and the pre-PR checklist that CI mirrors.

Continual improvement

This skill is maintained in the syntropic137 repository: https://github.com/syntropic137/syntropic137/blob/main/.claude/skills/dogfooding/SKILL.md

The capability table and the issue references are the parts that rot. When a run finds a new limit, add it with the execution id that found it; when one of the referenced issues closes, update the principle it supports rather than deleting the reference, so the reasoning survives the fix.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Use when asked to report the deployment sentinel value. Provides the sentinel string that proves a vendored skill reached the agent's context.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

syntropic137/syntropic13752026년 10월 24일 업데이트

Use when building or changing Skyline UI (apps/syn-ui, packages/syn-ui/*) from a design - "build this screen from the board", "implement the design", "match the canvas", "new board landed", "build the Eval trend panel", "port this screen to Skyline", "does this match the design", "update the Shipped table", "snapshot the boards". Covers reading a `*.dc.html` board and the Skyline spec, building from them, comparing 1440px and 390px screenshots against the board, and recording the shipped screen. Do NOT use for small tweaks to a screen that has already shipped (change the code directly, no board needed), for the frozen React app apps/syn-dashboard-ui (never edit it), or for refreshing the CI screenshot baselines alone (see design/README.md).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

syntropic137/syntropic13752026년 10월 24일 업데이트

devops

무료

Use for pull-request, merge, version and release mechanics in the Syntropic137 repo, and for CI or release-pipeline failures. Trigger phrases include "open a PR", "submit my changes", "address the review comments", "Copilot left comments", "merge this PR", "push this nit straight to main", "CI is red", "the release gate failed", "smoke test broke", "why is this PR BLOCKED", "bump the version", "cut a release", "release v1.x", "write the release notes", "main -> release PR", "approve the release gate", "the release published a bad asset", "triage the open PRs", "PR backlog", "which PRs are ready to merge", "merge order", "DORA metrics", "deploy frequency", "lead time", "change failure rate", "time to restore", "why didn't the issue auto-close". Covers trunk-based `main`, the `release` branch, local gates (`just qa-ci`, `just preflight`), GitHub Actions gates, review and merge policy, and post-release verification. Do NOT use for deciding what to dispatch, running the orchestrator loop, or deciding when to deploy a beta or run a pit stop (see `orchestrating`); for whether a task belongs in a workspace or locally (see `dogfooding`); for using the `syn` CLI as an end user (see the syntropic137 plugin skills).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

syntropic137/syntropic13752026년 10월 24일 업데이트

farewell

무료

Use when the user asks for a goodbye, farewell, or asks you to say bye. Always emit the verbatim token shown in the body.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

syntropic137/syntropic13752026년 10월 24일 업데이트

greet

무료

Use when the user asks for a greeting, says hello, or asks you to greet them. Always emit the verbatim token shown in the body.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

syntropic137/syntropic13752026년 10월 24일 업데이트

Use when turning something that happened into something that makes the next run better - "write a retro", "record this paper cut", "this bug escaped verification", "make this an eval", "why do we keep hitting this", "did that change actually help", "scorecard", "what did we learn from that run", "lessons keep getting re-learned". Covers the six-step loop (capture, classify, convert, change, measure, retro), the repo artifact each step produces, and how escaped bugs become eval cases. Do NOT use to design or judge a single workflow experiment (see `workflow-experimentation`, which this loop feeds), to decide where to run work (see `dogfooding`), or to debug one failed execution in the moment.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

syntropic137/syntropic13752026년 10월 24일 업데이트

syntropic137의 스킬 모두 보기

이 스킬의 문제 신고