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
18 changes: 9 additions & 9 deletions .claude/rules/documentation.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
paths:
- '**/*.md'
- '!CLAUDE.md'
- '!.claude/**'
- "**/*.md"
- "!CLAUDE.md"
- "!.claude/**"
---

# Documentation Rules
Expand All @@ -20,11 +20,11 @@ See the full standards: [Writing](../../../docs/contributing/standards/documenta

Use the correct template based on document type. See [Writing Standards](../../../docs/contributing/standards/documentation/writing.md) for full templates:

| Type | Structure | Title Convention |
| --------------- | ------------------------------------------------------ | ---------------------- |
| Standard | Overview > Rules > Resources > References | Noun phrase |
| Guide | Prerequisites > Steps > Verification > Troubleshooting | Starts with verb |
| Overview | Architecture > Key Concepts > Usage > Configuration | Topic name |
| Type | Structure | Title Convention |
| --------------- | ------------------------------------------------------ | ------------------------ |
| Standard | Overview > Rules > Resources > References | Noun phrase |
| Guide | Prerequisites > Steps > Verification > Troubleshooting | Starts with verb |
| Overview | Architecture > Key Concepts > Usage > Configuration | Topic name |
| Troubleshooting | Issue sections with Fix blocks | "Domain Troubleshooting" |

## Sections
Expand All @@ -36,7 +36,7 @@ Use the correct template based on document type. See [Writing Standards](../../.
## Formatting

- Code examples: minimal snippets showing the pattern, not full files
- Specify language on all fenced code blocks (```ts, ```bash, etc.)
- Specify language on all fenced code blocks (`ts`, `bash`, etc.)
- Use tables for structured comparisons (Correct vs Incorrect, options, conventions)
- Prefer relative links for internal docs, full URLs for external

Expand Down
18 changes: 9 additions & 9 deletions .claude/rules/errors.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
paths:
- 'scripts/**/*.ts'
- "scripts/**/*.ts"
---

# Error Handling Rules
Expand All @@ -10,7 +10,7 @@ All expected failures use the `Result<T, E>` tuple type. Never throw exceptions.
## Result Type

```ts
type Result<T, E = Error> = readonly [E, null] | readonly [null, T]
type Result<T, E = Error> = readonly [E, null] | readonly [null, T];
```

- Success: `[null, value]`
Expand All @@ -25,21 +25,21 @@ type Result<T, E = Error> = readonly [E, null] | readonly [null, T]
## Chaining with Early Returns

```ts
const [configError, config] = loadConfig(workspace)
if (configError) return [configError, null]
const [configError, config] = loadConfig(workspace);
if (configError) return [configError, null];

const [resolveError, result] = resolve(config, name)
if (resolveError) return [resolveError, null]
const [resolveError, result] = resolve(config, name);
if (resolveError) return [resolveError, null];

return [null, result]
return [null, result];
```

## Error Type Pattern

```ts
interface ConfigError {
readonly type: 'invalid_json' | 'missing_field' | 'unknown_key'
readonly message: string
readonly type: "invalid_json" | "missing_field" | "unknown_key";
readonly message: string;
}
```

Expand Down
26 changes: 13 additions & 13 deletions .claude/rules/testing.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
paths:
- '**/*.test.ts'
- "**/*.test.ts"
---

# Testing Rules
Expand All @@ -15,14 +15,14 @@ All tests use [Vitest](https://vitest.dev). Follow these conventions in every te
- One assertion focus per test case

```ts
import { describe, it, expect } from 'vitest'

describe('resolveScript', () => {
it('should resolve path relative to workspace root', () => {
const result = resolveScriptPath('build', '/project')
expect(result).toBe('/project/scripts/build.ts')
})
})
import { describe, it, expect } from "vitest";

describe("resolveScript", () => {
it("should resolve path relative to workspace root", () => {
const result = resolveScriptPath("build", "/project");
expect(result).toBe("/project/scripts/build.ts");
});
});
```

## Mocking
Expand All @@ -45,10 +45,10 @@ describe('resolveScript', () => {
- Use `toMatchObject` for partial matching on error shapes

```ts
it('should return error result for missing config', async () => {
const [error] = await loadConfig('/missing')
expect(error).toMatchObject({ type: 'parse_error' })
})
it("should return error result for missing config", async () => {
const [error] = await loadConfig("/missing");
expect(error).toMatchObject({ type: "parse_error" });
});
```

## Coverage Targets
Expand Down
5 changes: 3 additions & 2 deletions .claude/rules/typescript.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
paths:
- 'scripts/**/*.ts'
- "scripts/**/*.ts"
---

# TypeScript Rules
Expand Down Expand Up @@ -47,6 +47,7 @@ These rules are enforced by OXLint and must be followed in all TypeScript files.
> Full standard: [Coding Style](../../../docs/contributing/standards/typescript/coding-style.md) | [Naming](../../../docs/contributing/standards/typescript/naming.md)

Every source file follows this order:

1. **Imports** — node builtins, blank line, external packages, blank line, internal (farthest-to-closest, alphabetical). Top-level `import type`, no inline type specifiers.
2. **Module-level constants**
3. **Exported functions** — public API first, each with full JSDoc. See [Functions](../../../docs/contributing/standards/typescript/functions.md).
Expand All @@ -68,5 +69,5 @@ Every source file follows this order:

## Formatting (OXFmt)

- 100-char line width, 2-space indent, semicolons, single quotes, trailing commas
- 100-char line width, 2-space indent, semicolons, double quotes, trailing commas
- Import sorting: builtin > external > internal > parent/sibling/index
2 changes: 1 addition & 1 deletion .claude/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
"enabledPlugins": {
"plugin-dev@claude-plugins-official": true
}
}
}
31 changes: 16 additions & 15 deletions .claude/skills/feature/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ Read `scripts/conf/project.json` at the repository root to get the current list

Collect the following from the user before proceeding:

| Field | Required | Notes |
|-------|----------|-------|
| Title | Yes | Human-readable feature name |
| Status | Yes | ! One of the statuses from `scripts/conf/project.json` |
| Summary | Yes | One-sentence description of the feature |
| Problem | Yes | What limitation or gap this addresses |
| Solution | Yes | How the feature solves the problem |
| Impact | Yes | What users gain from this feature |
| GitHub Issue | No | Whether to search for / create a GitHub issue |
| Field | Required | Notes |
| ------------ | -------- | ------------------------------------------------------ |
| Title | Yes | Human-readable feature name |
| Status | Yes | ! One of the statuses from `scripts/conf/project.json` |
| Summary | Yes | One-sentence description of the feature |
| Problem | Yes | What limitation or gap this addresses |
| Solution | Yes | How the feature solves the problem |
| Impact | Yes | What users gain from this feature |
| GitHub Issue | No | Whether to search for / create a GitHub issue |

Use `AskUserQuestion` to collect any missing fields. All six content fields (Title, Summary, Problem, Solution, Impact, and Status) are required before creating the file.

Expand Down Expand Up @@ -87,12 +87,13 @@ issue: <issue number or empty>

The status badge colors follow a darkwave/synthwave palette:

| Status | Color | Badge |
|--------|-------|-------|
| Idea | Electric Purple | `![Idea](https://img.shields.io/badge/Idea-%238a04ed)` |
| Planned | Imperial Blue | `![Planned](https://img.shields.io/badge/Planned-%230C1565)` |
| In progress | Burnt Orange | `![In progress](https://img.shields.io/badge/In%20progress-%23e85d04)` |
| Released | Dark Teal | `![Released](https://img.shields.io/badge/Released-%2300a67e)` |
| Status | Color | Badge |
| ----------- | --------------- | ---------------------------------------------------------------------- |
| Idea | Electric Purple | `![Idea](https://img.shields.io/badge/Idea-%238a04ed)` |
| Planned | Imperial Blue | `![Planned](https://img.shields.io/badge/Planned-%230C1565)` |
| Upcoming | Imperial Blue | `![Upcoming](https://img.shields.io/badge/Upcoming-%230C1565)` |
| In progress | Burnt Orange | `![In progress](https://img.shields.io/badge/In%20progress-%23e85d04)` |
| Released | Dark Teal | `![Released](https://img.shields.io/badge/Released-%2300a67e)` |

### Step 6: Update Overview Table

Expand Down
23 changes: 12 additions & 11 deletions .claude/skills/feature/references/feature-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ issue: <issue number or empty>

Every feature file starts with YAML frontmatter containing:

| Field | Required | Description |
|-------|----------|-------------|
| `status` | Yes | Current status — must match a value from `scripts/conf/project.json` |
| `issue` | No | GitHub issue number (leave empty if none) |
| Field | Required | Description |
| -------- | -------- | -------------------------------------------------------------------- |
| `status` | Yes | Current status — must match a value from `scripts/conf/project.json` |
| `issue` | No | GitHub issue number (leave empty if none) |

## Status Badges

Expand Down Expand Up @@ -96,13 +96,13 @@ Convert the feature title to kebab-case:

Examples:

| Title | Filename |
|-------|----------|
| Agent Harness | `agent-harness.md` |
| Coding Agent Setup Doctor | `coding-agent-setup-doctor.md` |
| GG Workflow | `gg-workflow.md` |
| Coding Agent Toolkit MCP (Serena) | `coding-agent-toolkit-mcp.md` |
| Secure Data Access Layer (unmcp) | `secure-data-access-layer.md` |
| Title | Filename |
| --------------------------------- | ------------------------------ |
| Agent Harness | `agent-harness.md` |
| Coding Agent Setup Doctor | `coding-agent-setup-doctor.md` |
| GG Workflow | `gg-workflow.md` |
| Coding Agent Toolkit MCP (Serena) | `coding-agent-toolkit-mcp.md` |
| Secure Data Access Layer (unmcp) | `secure-data-access-layer.md` |

## Overview Table Row Format

Expand All @@ -111,6 +111,7 @@ Examples:
```

Where `<issue>` is either:

- `[#N](https://github.com/joggrdocs/home/issues/N)` — linked GitHub issue
- `-` — no issue yet

Expand Down
2 changes: 1 addition & 1 deletion .github/DISCUSSION_TEMPLATE/ideas.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
title: 'Ideas and Feature Requests'
title: "Ideas and Feature Requests"
labels: [enhancement]
body:
- type: textarea
Expand Down
2 changes: 1 addition & 1 deletion .github/DISCUSSION_TEMPLATE/q-and-a.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
title: 'Questions and Support'
title: "Questions and Support"
labels: [question]
body:
- type: textarea
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ body:
attributes:
label: Location
description: Where is the documentation that needs improvement?
placeholder: 'e.g., README.md, docs/getting-started.md, or a URL'
placeholder: "e.g., README.md, docs/getting-started.md, or a URL"
validations:
required: false

Expand Down
48 changes: 24 additions & 24 deletions .github/labeler.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,49 +4,49 @@
documentation:
- changed-files:
- any-glob-to-any-file:
- 'docs/**'
- '**/*.md'
- '.github/ISSUE_TEMPLATE/**'
- '.github/DISCUSSION_TEMPLATE/**'
- "docs/**"
- "**/*.md"
- ".github/ISSUE_TEMPLATE/**"
- ".github/DISCUSSION_TEMPLATE/**"

bug:
- changed-files:
- any-glob-to-any-file:
- '**/*.patch'
- "**/*.patch"

'product:cli':
"product:cli":
- changed-files:
- any-glob-to-any-file:
- 'cli/**'
- 'packages/cli/**'
- "cli/**"
- "packages/cli/**"

'product:sdk':
"product:sdk":
- changed-files:
- any-glob-to-any-file:
- 'sdk/**'
- 'packages/sdk/**'
- "sdk/**"
- "packages/sdk/**"

'product:api':
"product:api":
- changed-files:
- any-glob-to-any-file:
- 'api/**'
- 'packages/api/**'
- "api/**"
- "packages/api/**"

'product:mcp':
"product:mcp":
- changed-files:
- any-glob-to-any-file:
- 'mcp/**'
- 'packages/mcp/**'
- "mcp/**"
- "packages/mcp/**"

'product:integrations':
"product:integrations":
- changed-files:
- any-glob-to-any-file:
- 'integrations/**'
- 'packages/integrations/**'
- "integrations/**"
- "packages/integrations/**"

'product:console':
"product:console":
- changed-files:
- any-glob-to-any-file:
- 'console/**'
- 'packages/console/**'
- 'apps/console/**'
- "console/**"
- "packages/console/**"
- "apps/console/**"
10 changes: 5 additions & 5 deletions .github/workflows/stale.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ name: stale
on:
schedule:
# Run daily at midnight UTC
- cron: '0 0 * * *'
- cron: "0 0 * * *"
workflow_dispatch:

permissions:
Expand All @@ -26,8 +26,8 @@ jobs:
with:
days-before-stale: 60
days-before-close: 14
stale-issue-label: 'stale'
stale-pr-label: 'stale'
stale-issue-label: "stale"
stale-pr-label: "stale"
stale-issue-message: >
This issue has been automatically marked as stale because it has not
had recent activity. It will be closed in 14 days if no further
Expand All @@ -36,5 +36,5 @@ jobs:
This pull request has been automatically marked as stale because it
has not had recent activity. It will be closed in 14 days if no
further activity occurs.
exempt-issue-labels: 'status:accepted,status:in-progress,priority:critical,priority:high'
exempt-pr-labels: 'status:in-progress,priority:critical,priority:high'
exempt-issue-labels: "status:accepted,status:in-progress,priority:critical,priority:high"
exempt-pr-labels: "status:in-progress,priority:critical,priority:high"
11 changes: 7 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

[![Roadmap](https://img.shields.io/badge/Roadmap-8B5CF6?style=for-the-badge&logo=googlemaps&logoColor=white)](https://github.com/orgs/joggrdocs/projects/9)
[![Issues](https://img.shields.io/badge/Issues-8B5CF6?style=for-the-badge&logo=github&logoColor=white)](https://github.com/joggrdocs/home/issues)

<!-- TODO: Add back discussions once we are ready -->
<!-- [![Discussions](https://img.shields.io/badge/Discussions-8B5CF6?style=for-the-badge&logo=imessage&logoColor=white)](https://github.com/joggrdocs/home/discussions) -->

Expand All @@ -26,11 +27,13 @@ Build the perfect AI agent setup — automatically. Joggr creates custom coding
What we're actively working on right now:

<!-- target:roadmap-table:start -->
| Feature | Status | Assignee |
| ------- | ------ | -------- |
| [Agent Harness](https://github.com/orgs/joggrdocs/projects/9/views/3?pane=issue&itemId=PVTI_lADOAyJs4c4BQ0KszgmsstQ&issue=joggrdocs%7Chome%7C2) | ![In Progress](https://img.shields.io/badge/In%20Progress-e85d04?style=flat-square) | [![@zrosenbauer](https://img.shields.io/badge/%40zrosenbauer-black?style=flat-square&logo=github)](https://github.com/zrosenbauer) |
| [Coding Agent Setup CLI](https://github.com/orgs/joggrdocs/projects/9/views/3?pane=issue&itemId=PVTI_lADOAyJs4c4BQ0Kszgms50A&issue=joggrdocs%7Chome%7C6) | ![In Progress](https://img.shields.io/badge/In%20Progress-e85d04?style=flat-square) | [![@srosenbauer](https://img.shields.io/badge/%40srosenbauer-black?style=flat-square&logo=github)](https://github.com/srosenbauer) |

| Feature | Status | Assignee |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| [Agent Harness](https://github.com/orgs/joggrdocs/projects/9/views/3?pane=issue&itemId=PVTI_lADOAyJs4c4BQ0KszgmsstQ&issue=joggrdocs%7Chome%7C2) | ![In Progress](https://img.shields.io/badge/In%20Progress-e85d04?style=flat-square) | [![@zrosenbauer](https://img.shields.io/badge/%40zrosenbauer-black?style=flat-square&logo=github)](https://github.com/zrosenbauer) |
| [Coding Agent Setup CLI](https://github.com/orgs/joggrdocs/projects/9/views/3?pane=issue&itemId=PVTI_lADOAyJs4c4BQ0Kszgms50A&issue=joggrdocs%7Chome%7C6) | ![In Progress](https://img.shields.io/badge/In%20Progress-e85d04?style=flat-square) | [![@srosenbauer](https://img.shields.io/badge/%40srosenbauer-black?style=flat-square&logo=github)](https://github.com/srosenbauer) |
| [Coding Agent Setup Remediation](https://github.com/orgs/joggrdocs/projects/9/views/3?pane=issue&itemId=PVTI_lADOAyJs4c4BQ0Kszgms53o&issue=joggrdocs%7Chome%7C9) | ![In Progress](https://img.shields.io/badge/In%20Progress-e85d04?style=flat-square) | [![@zrosenbauer](https://img.shields.io/badge/%40zrosenbauer-black?style=flat-square&logo=github)](https://github.com/zrosenbauer) |

<!-- target:roadmap-table:end -->

**[View full roadmap →](https://github.com/orgs/joggrdocs/projects/9)**
Expand Down
Loading