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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -335,3 +335,5 @@ ASALocalRun/
# Cake build output (build/)
.artifacts/
.tests/

/TestResults
17 changes: 9 additions & 8 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@ Repository language is always English. The kit is designed to be used by English

It has two deliverables:

1. **Plugin** (`skills/`): skills, agents, hooks, and commands in the Claude Code plugin layout.
1. **Plugin** (`skills/`): skills and research agent definitions in the Claude Code plugin layout. Hooks and commands come later.
2. **Engine** (`src/`): a .NET 10 CLI, shipped two ways:
- as a `dotnet` global tool
- as self-contained single-file binaries (no .NET install needed) for `osx-arm64`, `linux-x64`, `linux-arm64`, `win-x64`, `win-arm64`

### v1 scope

- **Gated workflow phases:** spec → plan → implement → verify → review, with an explicit approval gate between phases.
- **Quality gates:** build, test, lint, and coverage checks must pass before a phase can complete.
- **State & traceability:** workflow state is saved, requirements are mapped to the tests that cover them, and reports are generated.
- **Install/sync:** the engine installs and updates the kit's skills in a target repository, for each supported agent.
- **Gated workflow profiles:** `feature` (new → refine → map → plan → implement → verify → finish), `bugfix` (new → diagnose → plan → implement → verify → finish), and `quick` (new → quick → finish). The agent checks each gate when the next phase starts; the human approves the transition. Each gate's approval and checklist can be switched off in `gates.json`.
- **Quality gates:** the Definition of Ready (gate into `plan`) and Definition of Done (gate into `finish`) are checklists. In v1 the agent runs build, test, lint, and coverage with the commands approved in `plan.md` and records the results; the CLI enforcing and running them comes later.
- **State & traceability:** workflow state and approval history are saved in `.shadekit/`, requirements are mapped to the tests that prove them, and `finish` can write a report (`report` in `config.json`).
- **Install/sync:** the engine installs and updates the kit's skills at user level for each supported agent (`integrations install/update`) and initialises and upgrades a repository's `.shadekit/` (`init`, `upgrade`). Nothing is installed into a repository.

## Target agents

Expand All @@ -33,7 +33,7 @@ If a design choice can stay agent-agnostic **without losing functionality or pre
| Path | Purpose |
|---|---|
| `skills/` | Shipped plugin content |
| `src/` | Production .NET projects: `CreativeCoders.ShadeKit.Cli` (the `shade-kit` CLI) and `CreativeCoders.ShadeKit.Core` (engine logic) |
| `src/` | Production .NET projects: `CreativeCoders.ShadeKit.Cli` (the `shade-kit` CLI) and `CreativeCoders.ShadeKit.Core` (engine logic). The templates that `init` writes live in `src/CreativeCoders.ShadeKit.Core/Templates/Resources/` (`<name>.template.md`, checklists in `checks/`) and are embedded into the Core assembly; their repository paths are listed in `ShippedTemplates`. |
| `tests/` | One test project per production project (`<Project>.Tests`) |
| `build/` | Cake Frosting build project (`CreativeCoders.CakeBuild`), run through `build.sh` / `build.ps1` / `build.cmd`. Not part of `ShadeKit.slnx`; it has its own `Directory.Build.props` and `Directory.Packages.props`. |
| `.github/` | GitHub Actions workflows and Dependabot configuration |
Expand All @@ -45,7 +45,7 @@ If a design choice can stay agent-agnostic **without losing functionality or pre
- Target `net10.0`. The SDK is pinned in `global.json` (`sdk.version`, `rollForward: patch`); CI installs exactly that version with `actions/setup-dotnet`.
- Use one `.slnx` solution at the repository root (`ShadeKit.slnx`).
- Use Central Package Management: all NuGet versions go in `Directory.Packages.props`. Never put `Version=` on a `PackageReference`.
- Put shared build settings (nullable, implicit usings, analyzers) in `Directory.Build.props`, not in individual `.csproj` files. Analyzers run with `AnalysisLevel=latest-recommended`, `EnforceCodeStyleInBuild`, and `TreatWarningsAsErrors`, so every warning breaks the build. `tests/.editorconfig` turns off CA1707 because test method names use underscores (`Method_Scenario_ExpectedResult`).
- Put shared build settings (nullable, implicit usings, analyzers) in `Directory.Build.props`, not in individual `.csproj` files. Analyzers run with `AnalysisLevel=latest-recommended`, `EnforceCodeStyleInBuild`, and `TreatWarningsAsErrors`, so every warning breaks the build. SonarAnalyzer.CSharp runs in every solution project as a `GlobalPackageReference` in `Directory.Packages.props`; a Sonar finding that is not fixed is suppressed with `[SuppressMessage(..., Justification = "...")]` on the class or method, not in `.editorconfig`. `tests/.editorconfig` turns off CA1707 because test method names use underscores (`Method_Scenario_ExpectedResult`).
- Files are UTF-8 without BOM with LF line endings (`.editorconfig`).
- Tests use xUnit v3, FakeItEasy, and AwesomeAssertions. They run on Microsoft.Testing.Platform (enabled in `global.json`) with `Microsoft.Testing.Extensions.TrxReport` and `Microsoft.Testing.Extensions.CodeCoverage` (`dotnet test --coverage`), which is what the Cake test task drives.
- Versioning: GitVersion (`GitVersion.yml`, `GitVersion.MsBuild` as `GlobalPackageReference`) derives one version from the git history for every project, the tool package, and the binaries. Never put a version in a `.csproj` or `.props` file. Builds need the full history (`fetch-depth: 0`). A release is a tag `v<SemVer>` on `main`.
Expand All @@ -59,7 +59,8 @@ If a design choice can stay agent-agnostic **without losing functionality or pre
dotnet build # from repo root (.slnx)
dotnet test
dotnet test --coverage # with coverage (writes TestResults/)
dotnet run --project src/CreativeCoders.ShadeKit.Cli -- features list
dotnet run --project src/CreativeCoders.ShadeKit.Cli -- init # initialises the git repository of the current directory
dotnet run --project src/CreativeCoders.ShadeKit.Cli -- feature list
dotnet pack src/CreativeCoders.ShadeKit.Cli # dotnet global tool package (command: shade-kit)
dotnet publish src/CreativeCoders.ShadeKit.Cli -c Release -r <rid> # self-contained single-file binary
```
Expand Down
2 changes: 2 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
package and the binaries carry the same version. Keep it in sync with GitVersion.Tool in build/Program.cs.
-->
<GlobalPackageReference Include="GitVersion.MsBuild" Version="6.8.2" />
<!-- Sonar rules run in every project of the solution; findings break the build like all other analyzer warnings. -->
<GlobalPackageReference Include="SonarAnalyzer.CSharp" Version="10.35.0.4138" />
</ItemGroup>
<ItemGroup>
<PackageVersion Include="AwesomeAssertions" Version="9.6.0" />
Expand Down
19 changes: 17 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
# Smart Harness for AI Driven Engineering Kit

This project is a harnessed workflow guided Toolkit helping you to build and test your software with AI agents.
It is designed to be a comprehensive solution for managing the entire software development lifecycle, from code generation to testing and deployment, all while leveraging the power of AI.
SHADE kit runs AI coding agents through a gated feature workflow: from a raw requirement to a clarified spec, a plan, the implementation, and a verified result with a report. It is built for small teams of 2–5 developers who work on features in parallel, each on its own branch, with Claude Code, GitHub Copilot, or OpenAI Codex CLI.

> **Status:** in development. Most commands described here are planned; today the CLI provides `shade-kit version`, `shade-kit init`, and `shade-kit feature list`.

## How it works

SHADE kit has two parts. The skills are the prompts the agent follows; the `shade-kit` CLI is the memory and the referee.

- **Skills** (`skills/`): one skill per phase plus shared skills for interviews, gate checks, research, and reviews. They are installed once per machine for each agent (`shade-kit integrations install`), never into a repository.
- **Engine** (`shade-kit`): a .NET CLI that keeps the feature state in `.shadekit/` inside the repository, committed and merged with the code. Agents call it with `--json`.
- **Phases:** `new` → `refine` → `map` → `plan` → `implement` → `verify` → `finish` in the `feature` profile. The `bugfix` profile replaces `refine` and `map` with `diagnose`; the `quick` profile runs `new` → `quick` → `finish` for small changes.
- **Gates:** the human approves every phase transition. The Definition of Ready guards `plan`, the Definition of Done guards `finish`; each gate can be switched off per repository.
- **Traceability:** requirements get stable IDs and are mapped to the tests that prove them; `finish` writes a report with requirements, tests, check results, and approvals.

SHADE kit never commits, pushes, or opens pull requests; that stays with the developer.

Design notes: [concept](research/shade-kit-concept.md), [skills](research/shade-kit-skills.md), and the [v1 feature packages](docs/feature-packages/README.md).

## Build

Expand Down
80 changes: 0 additions & 80 deletions docs/adr/0001-shadekit-version-drift.md

This file was deleted.

Loading
Loading