Authoritative reference for .devloop/ directory structure and file locations. Documents which files are git-tracked vs local-only, their purposes, and naming conventions. Use when creating devloop artifacts or understanding project structure.
This skill inherits all available tools. When active, it can use any tool Claude has access to.
Purpose: Define where devloop artifacts belong and whether they should be committed to git.
.claude/ paths to .devloop/.devloop/ files)Skill: git-workflows).claude/ is separate).devloop/ # Devloop's dedicated directory (v1.11.0+)
├── plan.md # Active implementation plan (git-tracked)
├── worklog.md # Completed work history (git-tracked)
├── local.md # Local settings/preferences (NOT git-tracked)
├── context.json # Tech stack cache (git-tracked)
│
├── issues/ # Issue tracking (git-tracked)
│ ├── index.md # Issue index and counts
│ ├── bugs.md # Bug-only view
│ ├── features.md # Feature-only view
│ ├── backlog.md # Open features + tasks
│ ├── BUG-001.md # Individual bug reports
│ ├── FEAT-001.md # Feature requests
│ ├── TASK-001.md # General tasks
│ ├── CHORE-001.md # Maintenance tasks
│ └── SPIKE-001.md # Technical investigations
│
└── spikes/ # Spike investigation reports (NOT git-tracked)
└── {topic}.md # e.g., auth.md, caching.md
Note: Claude Code's .claude/ directory remains separate and is not managed by devloop.
| File/Directory | Purpose | Created By |
|---|---|---|
plan.md | Active implementation plan with tasks | /devloop, task-planner |
worklog.md | History of completed work with commits | post-commit hook |
context.json | Cached tech stack detection | session-start hook |
issues/ | Issue tracking (bugs, features, tasks) | /devloop:bug, /devloop:new |
Rationale: These files represent shared project state that all team members need access to.
| File/Directory | Purpose | Created By |
|---|---|---|
local.md | Personal preferences, enforcement settings | User-created |
spikes/ | Exploratory investigation reports | /devloop:spike |
Rationale: These files contain local preferences or exploratory work that shouldn't be shared.
| Pattern | Example | Purpose |
|---|---|---|
plan.md | Fixed name | Active plan (only one) |
worklog.md | Fixed name | Work history |
local.md | Fixed name | Local settings |
context.json | Fixed name | Project context cache |
| Pattern | Example | Purpose |
|---|---|---|
BUG-NNN.md | BUG-001.md | Bug reports |
FEAT-NNN.md | FEAT-001.md | Feature requests |
TASK-NNN.md | TASK-001.md | General tasks |
CHORE-NNN.md | CHORE-001.md | Maintenance tasks |
SPIKE-NNN.md | SPIKE-001.md | Technical investigations (issue tracker) |
| Pattern | Example | Purpose |
|---|---|---|
spikes/{topic}.md | spikes/auth.md | Spike investigation results |
Location: .devloop/plan.md
Git Status: Tracked
Created By: /devloop command, task-planner agent
Updated By: /devloop:continue, task-checkpoint skill
Format:
# Devloop Plan: [Feature Name]
**Created**: [YYYY-MM-DD]
**Updated**: [YYYY-MM-DD HH:MM]
**Status**: [Planning | In Progress | Review | Complete]
**Current Phase**: [Phase name]
## Overview
[Feature description]
## Tasks
### Phase 1: [Name]
- [ ] Task 1.1: [Description]
...
## Progress Log
- [YYYY-MM-DD HH:MM]: [Event]
Lifecycle:
/devloop reaches Phase 6 (Planning)Location: .devloop/worklog.md
Git Status: Tracked
Created By: Post-commit hook (first commit)
Updated By: Post-commit hook (automatic)
Format:
# Devloop Worklog
## [Feature Name] (vX.Y.Z)
### Commits
- `abc1234` - 2024-12-11 14:30 - feat: add user authentication
- `def5678` - 2024-12-11 15:00 - test: add auth tests
### Tasks Completed
- [x] Task 1.1: Create user model
- [x] Task 1.2: Add authentication middleware
Lifecycle:
Location: .devloop/local.md
Git Status: NOT Tracked (add to .gitignore)
Created By: User (manually or via template)
Updated By: User
Format:
---
enforcement: advisory # advisory | strict
auto_commit: true # Prompt for commits after tasks
auto_version: true # Suggest version bumps
changelog: true # Maintain CHANGELOG.md
auto_tag: false # Create git tags
---
# Local Notes
Personal preferences and notes for this project.
Settings:
| Setting | Default | Description |
|---|---|---|
enforcement | advisory | How strictly to enforce plan updates |
auto_commit | true | Prompt for atomic commits |
auto_version | true | Suggest version bumps at phase completion |
changelog | true | Offer to update CHANGELOG.md |
auto_tag | false | Create git tags automatically |
Location: .devloop/context.json
Git Status: Tracked
Created By: Session-start hook
Updated By: Session-start hook (refreshed periodically)
Format:
{
"project": "my-project",
"description": "Project description",
"techStack": {
"language": "typescript",
"framework": "next",
"testFramework": "jest",
"projectType": "webapp",
"size": "medium"
},
"keyDirectories": ["src", "tests", "docs"],
"configFiles": ["package.json", "tsconfig.json"],
"detectedAt": "2024-12-11T10:00:00Z"
}
Purpose: Caches expensive tech stack detection to speed up session start.
Location: .devloop/issues/
Git Status: Tracked
Created By: /devloop:bug, /devloop:new, issue-manager agent
Structure:
issues/
├── index.md # Master index with counts
├── bugs.md # Bug-only filtered view
├── features.md # Feature-only filtered view
├── backlog.md # Open features + tasks
├── BUG-001.md
├── FEAT-001.md
└── ...
index.md Format:
# Issue Index
**Total**: 5 | **Open**: 3 | **Closed**: 2
## Open Issues
- [BUG-001](BUG-001.md): Login fails on mobile - High
- [FEAT-002](FEAT-002.md): Add dark mode - Medium
## Closed Issues
- [BUG-002](BUG-002.md): Fixed typo in header
Issue File Format: See Skill: issue-tracking for full specification.
Location: .devloop/spikes/
Git Status: NOT Tracked
Created By: /devloop:spike command
Naming: {topic}.md (e.g., auth.md, caching.md)
Rationale for NOT tracking:
Add these patterns to your project's .gitignore:
# Devloop local files (do not commit)
.devloop/local.md
.devloop/spikes/
See also: plugins/devloop/templates/gitignore-devloop for a copy-paste template.
.claude/ directorylocal.md and spikes/ - no complex patterns.devloop/ = devloop plugin, .claude/ = Claude Code coreIf you have existing devloop files in .claude/:
| Old Location | New Location |
|---|---|
.claude/devloop-plan.md | .devloop/plan.md |
.claude/devloop-worklog.md | .devloop/worklog.md |
.claude/devloop.local.md | .devloop/local.md |
.claude/project-context.json | .devloop/context.json |
.claude/issues/ | .devloop/issues/ |
.claude/bugs/ | .devloop/issues/ |
.claude/*-spike-report.md | .devloop/spikes/*.md |
Migration Process:
Backwards Compatibility:
.devloop/ first, falls back to .claude/ pathsIf you have existing .claude/bugs/ files:
.devloop/issues/ with prefix: BUG-001.mdtype: bug added to frontmatterindex.md, bugs.md) generated automatically/devloop to create initial plan.devloop/ directory created automatically.devloop/local.md and .devloop/spikes/ to .gitignoreSkill: plan-management - Plan file format and update rulesSkill: issue-tracking - Issue file format and workflowsSkill: worklog-management - Worklog format and update rulesSkill: atomic-commits - When and how to commit/devloop:continue - Resuming from a plan