Skip to content
Closed
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
5 changes: 5 additions & 0 deletions .config/cursor/auth.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJnb29nbGUtb2F1dGgyfHVzZXJfMDFKWFNRQlk5NlJBVzZSVkJYUUI1OEFQWFMiLCJ0aW1lIjoiMTc3NDgwOTA2NSIsInJhbmRvbW5lc3MiOiI1Yjk3NzJmYi1kNDJhLTQ5N2YiLCJleHAiOjE3NzQ4MTI2NjUsImlzcyI6Imh0dHBzOi8vYXV0aGVudGljYXRpb24uY3Vyc29yLnNoIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBlbWFpbCBvZmZsaW5lX2FjY2VzcyIsImF1ZCI6Imh0dHBzOi8vY3Vyc29yLmNvbSIsInR5cGUiOiJhcGlfa2V5X3Rva2VuIiwiYXBpS2V5SWQiOiIxMzA3ODIifQ.GkCIaUvW1vY_OLWdSFTZioWlrZ4Cs5QK4vLJl_HIUE0",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJnb29nbGUtb2F1dGgyfHVzZXJfMDFKWFNRQlk5NlJBVzZSVkJYUUI1OEFQWFMiLCJ0aW1lIjoiMTc3NDgwOTA2NSIsInJhbmRvbW5lc3MiOiI1Yjk3NzJmYi1kNDJhLTQ5N2YiLCJleHAiOjE3NzQ4MTI2NjUsImlzcyI6Imh0dHBzOi8vYXV0aGVudGljYXRpb24uY3Vyc29yLnNoIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBlbWFpbCBvZmZsaW5lX2FjY2VzcyIsImF1ZCI6Imh0dHBzOi8vY3Vyc29yLmNvbSIsInR5cGUiOiJhcGlfa2V5X3Rva2VuIiwiYXBpS2V5SWQiOiIxMzA3ODIifQ.GkCIaUvW1vY_OLWdSFTZioWlrZ4Cs5QK4vLJl_HIUE0",
"apiKey": "crsr_8376df41733106157b24e25376c34417623cbc8a67bcb52889c854eded515c5e"
}
Binary file added .cursor/ai-tracking/ai-code-tracking.db
Binary file not shown.
Binary file not shown.
46 changes: 46 additions & 0 deletions .cursor/cli-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"permissions": {
"allow": [
"Shell(ls)"
],
"deny": []
},
"version": 1,
"editor": {
"vimMode": false
},
"model": {
"modelId": "default",
"displayModelId": "auto",
"displayName": "Auto",
"displayNameShort": "Auto",
"aliases": [
"auto"
],
"maxMode": false
},
"hasChangedDefaultModel": true,
"privacyCache": {
"ghostMode": false,
"privacyMode": 4,
"updatedAt": 1774809065478
},
"network": {
"useHttp1ForAgent": false
},
"approvalMode": "allowlist",
"sandbox": {
"mode": "disabled",
"networkAccess": "user_config_with_defaults"
},
"attribution": {
"attributeCommitsToAgent": true,
"attributePRsToAgent": true
},
"authInfo": {
"authId": "google-oauth2|user_01JXSQBY96RAW6RVBXQB58APXS",
"userId": 217047319,
"email": "beller.moritz@googlemail.com",
"displayName": "Moritz Johner"
}
}
1 change: 1 addition & 0 deletions .cursor/cli.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"permissions":{"allow":["Read(**)","Write(.patchpilot/output.json)","Shell(ls)","Shell(find)","Shell(rg)","Shell(grep)","Shell(cat)","Shell(head)","Shell(tail)","Shell(sed)","Shell(awk)"],"deny":["Shell(git)","Shell(gh)","Shell(curl)","Shell(wget)","Shell(rm)","Shell(mv)","Shell(cp)","Shell(sh)","Shell(bash)"]}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"trustedAt": "2026-03-29T18:31:05.259Z",
"workspacePath": "/home/runner/work/patchpilot-v2/patchpilot-v2/.patchpilot-data/workspaces/moolen__logistis",
"trustMethod": "cli-flag"
}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"id": "2552d861-a671-4cbc-a370-495b9186b9c9"
}

Large diffs are not rendered by default.

11 changes: 11 additions & 0 deletions .cursor/skills-cursor/.cursor-managed-skills-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"builtinSkillIds": [
"create-rule",
"create-skill",
"create-subagent",
"migrate-to-skills",
"shell",
"update-cursor-settings"
],
"managedSkillIds": []
}
164 changes: 164 additions & 0 deletions .cursor/skills-cursor/create-rule/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
---
name: create-rule
description: >-
Create Cursor rules for persistent AI guidance. Use when you want to create a
rule, add coding standards, set up project conventions, configure
file-specific patterns, create RULE.md files, or asks about .cursor/rules/ or
AGENTS.md.
---
# Creating Cursor Rules

Create project rules in `.cursor/rules/` to provide persistent context for the AI agent.

## Gather Requirements

Before creating a rule, determine:

1. **Purpose**: What should this rule enforce or teach?
2. **Scope**: Should it always apply, or only for specific files?
3. **File patterns**: If file-specific, which glob patterns?

### Inferring from Context

If you have previous conversation context, infer rules from what was discussed. You can create multiple rules if the conversation covers distinct topics or patterns. Don't ask redundant questions if the context already provides the answers.

### Required Questions

If the user hasn't specified scope, ask:
- "Should this rule always apply, or only when working with specific files?"

If they mentioned specific files and haven't provided concrete patterns, ask:
- "Which file patterns should this rule apply to?" (e.g., `**/*.ts`, `backend/**/*.py`)

It's very important that we get clarity on the file patterns.

Use the AskQuestion tool when available to gather this efficiently.

---

## Rule File Format

Rules are `.mdc` files in `.cursor/rules/` with YAML frontmatter:

```
.cursor/rules/
typescript-standards.mdc
react-patterns.mdc
api-conventions.mdc
```

### File Structure

```markdown
---
description: Brief description of what this rule does
globs: **/*.ts # File pattern for file-specific rules
alwaysApply: false # Set to true if rule should always apply
---

# Rule Title

Your rule content here...
```

### Frontmatter Fields

| Field | Type | Description |
|-------|------|-------------|
| `description` | string | What the rule does (shown in rule picker) |
| `globs` | string | File pattern - rule applies when matching files are open |
| `alwaysApply` | boolean | If true, applies to every session |

---

## Rule Configurations

### Always Apply

For universal standards that should apply to every conversation:

```yaml
---
description: Core coding standards for the project
alwaysApply: true
---
```

### Apply to Specific Files

For rules that apply when working with certain file types:

```yaml
---
description: TypeScript conventions for this project
globs: **/*.ts
alwaysApply: false
---
```

---

## Best Practices

### Keep Rules Concise

- **Under 50 lines**: Rules should be concise and to the point
- **One concern per rule**: Split large rules into focused pieces
- **Actionable**: Write like clear internal docs
- **Concrete examples**: Ideally provide concrete examples of how to fix issues

---

## Example Rules

### TypeScript Standards

```markdown
---
description: TypeScript coding standards
globs: **/*.ts
alwaysApply: false
---

# Error Handling

\`\`\`typescript
// ❌ BAD
try {
await fetchData();
} catch (e) {}

// ✅ GOOD
try {
await fetchData();
} catch (e) {
logger.error('Failed to fetch', { error: e });
throw new DataFetchError('Unable to retrieve data', { cause: e });
}
\`\`\`
```

### React Patterns

```markdown
---
description: React component patterns
globs: **/*.tsx
alwaysApply: false
---

# React Patterns

- Use functional components
- Extract custom hooks for reusable logic
- Colocate styles with components
```

---

## Checklist

- [ ] File is `.mdc` format in `.cursor/rules/`
- [ ] Frontmatter configured correctly
- [ ] Content under 500 lines
- [ ] Includes concrete examples
Loading
Loading