Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
3db8a40
feat: scaffold monorepo structure for Effect Patterns MCP Plugin
PaulJPhilp Oct 10, 2025
49525ea
feat: implement Effect Patterns Toolkit package
PaulJPhilp Oct 10, 2025
665a1b5
feat: implement Effect-based tracing layer and server infrastructure
PaulJPhilp Oct 10, 2025
dcb10aa
feat: implement all MCP server API endpoints
PaulJPhilp Oct 10, 2025
6cd0b49
feat: add Claude Code plugin manifests
PaulJPhilp Oct 10, 2025
5fddb09
docs: add comprehensive implementation report
PaulJPhilp Oct 10, 2025
7e9caac
test: add comprehensive unit tests for toolkit package
PaulJPhilp Oct 10, 2025
a73454d
test: add comprehensive integration tests with mock OTLP collector
PaulJPhilp Oct 10, 2025
4117ada
ci: add comprehensive CI/CD pipeline with coverage and badges
PaulJPhilp Oct 10, 2025
bd25bc1
feat: add Vercel staging deployment with comprehensive smoke tests
PaulJPhilp Oct 10, 2025
351908c
docs: add comprehensive Vercel setup guide
PaulJPhilp Oct 10, 2025
e661521
chore: add Claude plugin config and Discord integration settings
PaulJPhilp Oct 11, 2025
aeb2ee5
- **chore**: install `@types/semver` and clean analyzer imports
PaulJPhilp Oct 12, 2025
3976c02
Add Next.js type definitions
PaulJPhilp Oct 15, 2025
810ee5b
Skip type checking during Next.js build for Vercel deployment
PaulJPhilp Oct 15, 2025
d2c2d34
Fix toolkit tests: update to use object parameter syntax for buildSni…
PaulJPhilp Oct 15, 2025
d5db893
feat: Add MCP server for Effect Patterns
PaulJPhilp Oct 15, 2025
0f4941e
chore: remove backup dir from VCS and stop tracking tools binaries; u…
PaulJPhilp Oct 17, 2025
c410d29
chore(content): remove unreferenced content/archived directory
PaulJPhilp Oct 17, 2025
591867f
chore: remove content backups and AI suggestions scratch files; ignor…
PaulJPhilp Oct 17, 2025
286ebf9
chore(toolkit): remove unused default export from splitSections
PaulJPhilp Oct 17, 2025
0ba971d
chore: prune unused deps and update lockfile
PaulJPhilp Oct 17, 2025
da458df
chore: track pnpm-lock.yaml and add pnpm-workspace; refresh lockfile
PaulJPhilp Oct 17, 2025
2df8020
chore: remove non-pnpm lockfiles (bun.lock, package-lock.json)
PaulJPhilp Oct 17, 2025
ce7cdae
test: skip runtime tests for content/new/src while keeping typecheck
PaulJPhilp Oct 17, 2025
7db4651
chore: add CODEOWNERS to protect content paths
PaulJPhilp Oct 17, 2025
6bc9be7
feat(web): add web app, components, docs, and generated content
PaulJPhilp Oct 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .ai-cli-config.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"sequentialNumber": 1
}
}
32 changes: 32 additions & 0 deletions .biomeignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Ignore archived docs and generated files

docs/archive/
docs/archive/**
./docs/archive/
./docs/archive/**
**/docs/archive/**
runs/
runs/**
./runs/
./runs/**
**/runs/**
app/_backup/
app/_backup/**
./app/_backup/
./app/_backup/**
**/app/_backup/**
content/backups/
content/backups/**
./content/backups/
./content/backups/**
**/content/backups/**
content/archived/
content/archived/**
./content/archived/
./content/archived/**
**/content/archived/**
scripts/autofix/ai/suggestions/
scripts/autofix/ai/suggestions/**
./scripts/autofix/ai/suggestions/
./scripts/autofix/ai/suggestions/**
**/scripts/autofix/ai/suggestions/**
18 changes: 18 additions & 0 deletions .claude-plugin/.ai-plugin-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"schema_version": "v1",
"name_for_human": "Effect Patterns (staging)",
"name_for_model": "effect_patterns_staging",
"description_for_human": "Search and generate Effect pattern snippets (staging).",
"description_for_model": "Tool for searching and generating Effect patterns. Use function-calls via the OpenAPI spec.",
"auth": {
"type": "service_http",
"authorization_type": "bearer"
},
"api": {
"type": "openapi",
"url": "https://YOUR-STAGING-URL.vercel.app/.well-known/openapi.json"
},
"logo_url": "https://YOUR-STAGING-URL.vercel.app/logo.png",
"contact_email": "ops@your-org.example",
"legal_info_url": "https://your-org.example/legal"
}
20 changes: 20 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "effect-patterns",
"version": "0.1.0",
"description": "Effect Patterns plugin for Claude Code - search and generate Effect-TS code patterns",
"author": "Paul J Philp",
"homepage": "https://github.com/PaulJPhilp/EffectPatterns",
"repository": "https://github.com/PaulJPhilp/EffectPatterns",
"license": "MIT",
"keywords": [
"effect",
"effect-ts",
"typescript",
"patterns",
"code-generation"
],
"category": "development",
"apiEndpoint": "https://effect-patterns-mcp.vercel.app",
"requiresAuth": true,
"authType": "api-key"
}
File renamed without changes.
19 changes: 19 additions & 0 deletions .claude-plugin/plugins/effect-patterns/commands/search.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
title: "Search Effect Patterns"
description: "Search the Effect Patterns catalog by keyword and get short summaries."
---

Usage:

- /pattern search [query]

Behavior:

- Query the plugin's MCP server (or local index) for pattern matches.
- Return a short list of matching patterns (id, title, 1-line summary).
- Show top example usage snippet.

Examples:

- /pattern search retry
- /pattern search concurrency pool
18 changes: 18 additions & 0 deletions .claude-plugin/plugins/effect-patterns/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "effect-patterns",
"version": "0.0.1",
"description": "Effect Patterns – search, explain and generate TypeScript Effect snippets (staging).",
"author": {
"name": "Paul J Philp",
"url": "https://github.com/PaulJPhilp"
},
"commands": ["./commands/search.md", "./commands/explain.md"],
"agents": ["./agents/recommender.md"],
"mcpServers": {
"effect-patterns-server": {
"source": "http",
"url": "__MCP_BASE_URL__/api"
}
},
"strict": false
}
3 changes: 0 additions & 3 deletions .env

This file was deleted.

173 changes: 173 additions & 0 deletions .github/BRANCH_PROTECTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
# Branch Protection Configuration

This document describes the recommended branch protection rules for the `main` branch to ensure code quality and prevent breaking changes.

## Required Status Checks

The following CI jobs must pass before merging to `main`:

### Core Checks
- **lint** - Prettier and Biome code formatting/linting
- **typecheck** - TypeScript type checking
- **test-toolkit** - Unit tests for toolkit package
- **build-toolkit** - Build and schema generation for toolkit
- **build-mcp-server** - Build MCP server
- **test-integration** - Integration tests for MCP server
- **ci-success** - Meta-job that fails if any required job fails

## GitHub Settings Configuration

To configure branch protection rules via GitHub UI:

1. **Navigate to Settings**:
- Go to repository settings
- Click "Branches" in left sidebar
- Click "Add branch protection rule" or edit existing rule

2. **Branch name pattern**: `main`

3. **Required settings**:

✅ **Require a pull request before merging**
- Require approvals: 1 (recommended)
- Dismiss stale pull request approvals when new commits are pushed
- Require review from Code Owners (optional)

✅ **Require status checks to pass before merging**
- Require branches to be up to date before merging
- Status checks that are required:
```
lint
typecheck
test-toolkit
build-toolkit
build-mcp-server
test-integration
ci-success
```

✅ **Require conversation resolution before merging**

✅ **Do not allow bypassing the above settings**

4. **Optional (recommended) settings**:

☑️ **Require linear history**
- Prevents merge commits, requires rebase or squash

☑️ **Require deployments to succeed before merging**
- If you have deployment previews

## Programmatic Configuration (GitHub API)

You can also configure branch protection using the GitHub API or `gh` CLI:

```bash
gh api repos/PaulJPhilp/Effect-Patterns/branches/main/protection \
--method PUT \
--field required_status_checks[strict]=true \
--field required_status_checks[contexts][]=lint \
--field required_status_checks[contexts][]=typecheck \
--field required_status_checks[contexts][]=test-toolkit \
--field required_status_checks[contexts][]=build-toolkit \
--field required_status_checks[contexts][]=build-mcp-server \
--field required_status_checks[contexts][]=test-integration \
--field required_status_checks[contexts][]=ci-success \
--field required_pull_request_reviews[required_approving_review_count]=1 \
--field required_pull_request_reviews[dismiss_stale_reviews]=true \
--field enforce_admins=true \
--field required_conversation_resolution=true \
--field required_linear_history=true
```

## Terraform Configuration

If using Terraform for infrastructure as code:

```hcl
resource "github_branch_protection" "main" {
repository_id = "Effect-Patterns"
pattern = "main"

required_status_checks {
strict = true
contexts = [
"lint",
"typecheck",
"test-toolkit",
"build-toolkit",
"build-mcp-server",
"test-integration",
"ci-success"
]
}

required_pull_request_reviews {
required_approving_review_count = 1
dismiss_stale_reviews = true
}

enforce_admins = true
require_conversation_resolution = true
require_linear_history = true
}
```

## Bypass Permissions

Repository administrators can bypass these rules if absolutely necessary, but this should be:
- Done sparingly and only in emergencies
- Documented in commit messages
- Followed up with a PR to fix any issues

## Updating Status Checks

When adding new CI jobs that should be required:

1. Add the job to `.github/workflows/ci.yml`
2. Add it to the `needs` array in the `ci-success` job
3. Update this document
4. Update branch protection settings via UI, API, or Terraform

## Codecov Integration

The `codecov` status check will appear automatically after the first coverage upload. To make it required:

1. Wait for first coverage report to be uploaded
2. Add `codecov/project` and `codecov/patch` to required status checks (optional)

## Local Testing

Before pushing, ensure all checks pass locally:

```bash
# Run all checks
bun run lint
bun run typecheck
bun --filter @effect-patterns/toolkit run test:coverage
bun --filter @effect-patterns/toolkit run build
bun --filter @effect-patterns/toolkit run build:schemas
bun --filter @effect-patterns/mcp-server run build

# Integration tests (requires dev server running)
bun --filter @effect-patterns/mcp-server run dev &
sleep 5
bun --filter @effect-patterns/mcp-server run test:integration
```

## Troubleshooting

**Status check not showing up?**
- Ensure the job name in `.github/workflows/ci.yml` matches exactly
- Check that the workflow has run at least once on the branch
- Status check names are case-sensitive

**CI failing on PRs but passing locally?**
- Check for environment-specific issues
- Ensure all dependencies are in `package.json` (not just global installs)
- Review CI logs for detailed error messages

**Need to merge urgently?**
- Contact a repository administrator
- Document the reason in the PR
- Create a follow-up issue to fix properly
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Protect core content paths: require @PaulJPhilp review before merge
/content/published/** @PaulJPhilp
/content/** @PaulJPhilp
Loading
Loading