Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
By timbrinded
Shape language skills for authoring, validating, preflighting, and reviewing architecture contracts.
npx claudepluginhub timbrinded/shapelang --plugin shapelangUse when Codex needs to review `.shape` diffs before a PR or during implementation to find advisory architecture-contract risk that `shp check` may permit after the live model was loosened, including removed final forbids, weakened traits, widened grants/effects, removed coverage or bindings, relation weakening, traceability loss, epistemic regression, or weak attestations.
Use when Codex needs to plan a code or model change against an existing Shape model before editing, including locating relevant Shape symbols, reading `shp explain`/`shp graph`/`shp memory` context, surfacing constraints, guards, effects, ownership, coverage, bindings, and optionally drafting a temporary `change` block for `shp check` precheck diagnostics.
Use when working with .shape files in repositories that use the Shape language to author, review, teach, format, debug, or validate Shape architecture claims, including global model updates, Memory Guards on functions/components/resources, property-level and forbid-transform guards, design-memory freshness (review_by, --strict-freshness), sensitive memories with role and approver policy, user-defined require_context/satisfied_by obligations and built-in trait shadowing, nested guard blocks, typed component/resource/effect models, top-level relation declarations, hypergraphs, hypercycles, relation kinds such as calls/callbacks/provides/coordinated_call, forbid hypercycle rules, coverage attestations, and agent-safe workflows using all shp CLI commands including shp graph.
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Comprehensive skill pack with 66 specialized skills for full-stack developers: 12 language experts (Python, TypeScript, Go, Rust, C++, Swift, Kotlin, C#, PHP, Java, SQL, JavaScript), 10 backend frameworks, 6 frontend/mobile, plus infrastructure, DevOps, security, and testing. Features progressive disclosure architecture for 50% faster loading.
Harness-native ECC plugin for engineering teams - 64 agents, 262 skills, 84 legacy command shims, reusable hooks, rules, MCP conventions, and operator workflows for Claude Code plus adjacent agent harnesses
Complete collection of battle-tested Claude Code configs from an Anthropic hackathon winner - agents, skills, hooks, and rules evolved over 10+ months of intensive daily use
Efficient skill management system with progressive discovery — 410+ production-ready skills across 33+ domains
Post-generation code quality cleanup. Reviews git diffs for AI-generated verbosity, unnecessary state, defensive coding, and complexity — then applies concrete simplifications.
Language-agnostic performance optimization skill distilled from Google's Abseil performance wisdom. Covers measurement methodology, optimization techniques, and cross-language patterns for C++, Rust, and TypeScript.
SwiftUI design excellence — HIG-compliant code review, generation, and iteration with 40 enforceable rules, accessibility checks, and modern API enforcement.
Lateral knowledge explorer that traverses Wikipedia to find non-obvious cross-domain structural analogues for engineering problems
Language-agnostic performance optimization skill distilled from Google's Abseil performance wisdom. Covers measurement methodology, optimization techniques, and cross-language patterns for C++, Rust, and TypeScript.
Shape is a typed architecture conformance language for making architectural claims explicit and checkable.
Application code can be messy, implicit, and spread across many files. Shape gives the system a small human-readable model in .shape files:
The checker does not prove the application implementation is correct. It checks that the declared architecture model is coherent. That is the product boundary: humans and LLMs write reviewable claims, then a deterministic checker accepts or rejects those claims.

Install the released shp typechecker binary. Pin the version in scripts and CI so checks are reproducible.
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/timbrinded/shapelang/releases/download/v0.4.1/install.sh | sh
On Windows:
irm https://github.com/timbrinded/shapelang/releases/download/v0.4.1/install.ps1 | iex
Run the checker from a repo that contains Shape files:
shp check
shp fmt --check
shp coverage --changed-files changed.txt
shp memory
shp obligations
For local developer installs, update the released binary explicitly:
shp update
shp update --dry-run
shp update --path PATH can replace a custom install path, but an existing target
must already identify itself as the Shape CLI and report a valid version.
shp check scans these paths when no files are provided:
shape/**/*.shape
In GitHub Actions, install the same pinned release with the setup action:
steps:
- uses: actions/checkout@v4
- uses: timbrinded/shapelang@v0.4.1
- run: shp check
Manual archive downloads are available on the GitHub release if you do not want to run the installer script.
The first core use case is append-only resource protection.
If a resource is declared AppendOnly, then a function that emits HardDelete<Resource> is rejected even if the component grants that effect. Final forbids win over grants.
Shape also covers:
docs_not_needed attestationprovides relation hyperedgesDELETE, TRUNCATE, and DROP operationsSee Refactor Constraints for the design-memory workflow around rationale, memory, and reevaluation.
Shape files use the .shape extension. This example declares an append-only audit resource and two allowed functions:
module audit
trait AppendOnly<T: Resource> {
allow Append<T>
allow Read<T>
forbid final DropStorage<T>
forbid final HardDelete<T>
forbid final Truncate<T>
}
resource AuditEvent : AppendOnly
component AuditStore {
owns AuditEvent
grants Append<AuditEvent>
grants Read<AuditEvent>
fn appendEvent
source ts("src/audit/store.ts#appendEvent")
effects complete {
Append<AuditEvent>
evidence ts("src/audit/store.ts:8-14")
}
fn listEvents
source ts("src/audit/store.ts#listEvents")
effects complete {
Read<AuditEvent>
evidence ts("src/audit/store.ts:18-25")
}
}
A source-backed model update can add a new function directly to the global Shape model:
module audit
component AuditStore {
grants HardDelete<AuditEvent>
fn purgeOldEvents
source ts("src/audit/purge.ts#purgeOldEvents")
effects complete {
HardDelete<AuditEvent>
evidence ts("src/audit/purge.ts:12-16")
}
}
That model update fails because AuditEvent : AppendOnly derives a final forbid for HardDelete<AuditEvent>.
The checker pipeline is:
.shape files with Langium.