M2: the four V1 atoms + Git sync (Gitea / filesystem)

- Author the four V1 skill atoms in skills/ (Git is the source of truth): spec-writing &
  story-breakdown (product-owner), test-plan-generation & diff-review (qa) — each with
  risk-tagged actions, golden tests, and a body.
- SharedKernel: IGitProvider seam (read-only, provider-agnostic) + GitFile.
- Integrations module (its first real code): FileSystemGitProvider (dogfood/local) and a
  GiteaGitProvider (Gitea REST: recursive tree → SKILL.md blobs → base64 contents); the
  provider is chosen by GitSource:Provider config.
- Skills: SkillSyncService consumes IGitProvider (never Integrations) and indexes each file;
  POST /api/skills/sync and a POST /api/skills/webhook/gitea (re-sync on push; signature
  verification + changed-file-only + queue offload come later).

Verified: build green; ArchitectureTests 8/8 (Skills & Integrations reference only
SharedKernel; the Git seam lives in SharedKernel); IntegrationTests 22/22 incl. a sync that
indexes the four real atoms from skills/, published and queryable by role.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-09 18:34:53 +03:30
parent 401e3e69af
commit bfcd223374
15 changed files with 452 additions and 5 deletions
+40
View File
@@ -0,0 +1,40 @@
---
id: spec-writing
name: Spec Writing
version: 1.0.0
summary: Turn a feature request or task into a clear, testable spec.
roles: [product-owner]
inputs: A feature request, task title, or short description of desired behaviour.
outputs: A structured spec — problem, goal, scope, acceptance criteria, and out-of-scope.
actions:
- name: write-spec
risk: draft
description: Produce the spec as a draft artifact on the task (held for review).
tools: []
context: [house-style, product-docs]
visibility: public
min_tier: free
golden_tests:
- input: "Add a logout button to the app header."
expected: |
Problem: signed-in users have no obvious way to end their session.
Goal: a visible logout control that ends the session and returns to sign-in.
Acceptance: a logout button is shown in the header when authenticated; clicking it
clears the session and redirects to /login; it is hidden when signed out.
Out of scope: session timeout, multi-device sign-out.
---
# Spec Writing
You are the Product Owner. Turn the input into a spec a developer can build and a QA can test.
Write these sections, concisely:
- **Problem** — the user pain in one or two sentences.
- **Goal** — the desired outcome.
- **Scope** — what is included.
- **Acceptance criteria** — bullet points, each independently verifiable.
- **Out of scope** — what this explicitly does not cover.
Be specific and testable. Prefer concrete behaviour over vague intent. Do not invent
requirements that contradict the provided product docs or house style.