SHIPLOG

What if your project remembered
every session, every decision,
every pattern —

without you writing a single doc?

/plugin marketplace add aadivar/shiplog
/plugin install shiplog@shiplog

You open Claude Code on Monday morning.
You stare at the cursor.

claude
$ claude
 
Shiplog: Sprint 2 | Feature F009 (in-progress) | 12/24 features done
 
I see we're on Sprint 2, working on the billing module.
Last session we finished the invoice list view (F008).
Let me pick up where we left off...

PROGRESS.md is read at the start of every session. Automatically.

Three weeks in. Forty commits deep.
Someone asks why you picked Postgres over SQLite.

docs/SPECS.md
## Architecture Decisions
 
| Date | Decision | Rationale |
|------------|--------------------------------|--------------------------------------|
| 2026-02-14 | Postgres over SQLite | Concurrent writes + JSON support |
| 2026-02-18 | JWT with refresh token rotation | Stateless auth, revocation via DB |
| 2026-02-21 | Zod for runtime validation | TypeScript-first, composable |

The Specs Agent logs every architecture decision after each commit. You never wrote any of this.

You ship the auth endpoint at 11 PM.
The tests pass. The types check.

docs/SECURITY.md
## Review Log
 
| Date | Session | Findings | Severity |
|------------|---------------|-----------------------------------|----------|
| 2026-02-21 | Auth endpoints | Missing rate limiting on /login | MED |
| 2026-02-21 | Auth endpoints | Password reset token lacks expiry | HIGH |
| 2026-02-22 | Auth fix | Rate limiting added, TTL set | CLEAN |

The Security Agent reviews every commit against the OWASP Top 10. Silently. In the background.

Session 12. The error handling looks
completely different from session 4.

~/.claude/projects/.../MEMORY.md
## Code Conventions
 
- Error handling: Always use AppError class with code + message
- API responses: { success: boolean, data?: T, error?: string }
- File naming: kebab-case for files, PascalCase for components
- Database: All queries via repository pattern, no raw SQL in routes

The Memory Agent tracks your patterns and conventions. Claude writes consistent code across every session.

The PM asks for a status update.
You open six tabs. Scroll through PRs.
Count commits on your fingers.

/shiplog status
$ /shiplog status
 
Shiplog Status — Acme SaaS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Sprint: 2 | Active: F009 (in-progress) | 12/24 features done
 
Phase 1 (Foundation): 100%
Phase 2 (Core): 67%
Phase 3 (Advanced): 0%
 
Security: Last review 2026-03-03CLEAN

One command. Your entire project at a glance.

New session. The context is gone.
You paste the README. Describe the stack.
Re-explain the folder structure.

Background Agents
[Session starts]
> Reading docs/PROGRESS.md...
> Loading project context...
> Shiplog: Sprint 2 | F009 (in-progress) | 12/24 done
 
[After commit]
> Launching background agents...
PRD Agent → Discovered F003: "Stripe Integration"
Specs Agent → docs/SPECS.md updated
Security Agent → CLEAN
Memory Agent → 2 new patterns logged

Four background agents. Zero interruptions. Every commit, your project documents itself. Features you never defined appear in your PRD.

How it works

1
/shiplog init

Pick vibe mode. No planning needed. 60 seconds.

2
Just build

Code whatever you want. Pivot freely. Shiplog watches your commits.

3
PRD writes itself

Features auto-discovered. Specs logged. Security reviewed. All in the background.

Stop re-explaining your project.
Start building.

/plugin marketplace add aadivar/shiplog
/plugin install shiplog@shiplog

Free. Open source. All data stays local.