Skip to content

Commit c0874cb

Browse files
committed
docs: rewrite README for launch
1 parent 7f40c04 commit c0874cb

3 files changed

Lines changed: 151 additions & 41 deletions

File tree

CONTRIBUTING.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Contributing to DevsContext
2+
3+
Thanks for your interest in contributing!
4+
5+
## Development Setup
6+
7+
```bash
8+
git clone https://github.com/anthropics/devscontext.git
9+
cd devscontext
10+
pip install -e ".[dev]"
11+
```
12+
13+
## Running Tests
14+
15+
```bash
16+
pytest tests/
17+
```
18+
19+
## Code Style
20+
21+
We use ruff for linting and formatting:
22+
23+
```bash
24+
ruff check .
25+
ruff format .
26+
mypy src/
27+
```
28+
29+
## Pull Requests
30+
31+
1. Fork the repo and create a branch from `main`
32+
2. Add tests for any new functionality
33+
3. Ensure tests pass and code is formatted
34+
4. Submit a PR with a clear description
35+
36+
## Adding a New Adapter
37+
38+
Adapters live in `src/devscontext/adapters/`. To add a new source:
39+
40+
1. Create `adapters/your_source.py` extending `Adapter` base class
41+
2. Implement `fetch_context()`, `health_check()`, and any source-specific methods
42+
3. Add configuration model to `config.py`
43+
4. Wire into `DevsContextCore` in `core.py`
44+
5. Add tests in `tests/test_your_source.py`
45+
46+
See `adapters/jira.py` as a reference implementation.
47+
48+
## Questions?
49+
50+
Open an issue or start a discussion.

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2026 Pro0f
3+
Copyright (c) 2024 Anthropic
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 100 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,160 @@
11
# DevsContext
22

3-
**Synthesized engineering context for AI coding agents.**
3+
MCP server that gives AI coding agents synthesized engineering context — requirements, decisions, architecture, and standards — from your actual tools.
44

5-
DevsContext is an open-source MCP server that gives AI coding tools (Claude Code,
6-
Cursor, etc.) the full picture when working on a task — requirements, team decisions,
7-
architecture patterns, and coding standards — all in one synthesized context block.
5+
## The Problem
86

9-
> Large tech companies build this internally. DevsContext brings it to everyone.
7+
AI coding agents lack context. They don't know your team's decisions, architecture patterns, or coding standards. Connecting raw MCP servers floods them with irrelevant data they can't prioritize. Large companies build internal context infrastructure. DevsContext brings that to everyone.
108

11-
## The Problem
9+
## What You Get
10+
11+
When you say "work on PROJ-123" in Claude Code, DevsContext fetches from Jira, meeting transcripts, and your docs, then synthesizes it into this:
12+
13+
```markdown
14+
## Task: PROJ-123 — Add retry logic to payment webhook handler
15+
16+
### Requirements
17+
1. Implement exponential backoff for failed webhook deliveries
18+
2. Max 5 retry attempts over 24 hours
19+
3. Dead-letter queue for permanently failed webhooks
20+
4. Metrics for retry success/failure rates
21+
22+
Acceptance criteria: [Jira PROJ-123]
23+
- [ ] Webhooks retry with exponential backoff (1min, 5min, 30min, 2hr, 12hr)
24+
- [ ] Failed webhooks move to DLQ after 5 attempts
25+
- [ ] Dashboard shows retry metrics
26+
27+
### Key Decisions
28+
- **Use SQS with visibility timeout** for retry scheduling, not cron jobs.
29+
Decided by @sarah in March 15 sprint planning. Rationale: SQS handles
30+
timing natively, reduces operational overhead. [Meeting: Sprint 23 Planning]
1231

13-
AI coding agents are smart but lack context. They don't know:
14-
- Why a feature was decided on (from your sprint planning meeting)
15-
- How your team structures code (from your architecture docs)
16-
- What coding patterns to follow (from your style guides)
32+
- **Exponential backoff schedule**: 1min → 5min → 30min → 2hr → 12hr.
33+
Based on payment processor rate limits. [Comment by @mike, Mar 16]
1734

18-
Connecting individual MCP servers (Jira, Confluence, etc.) helps, but the AI
19-
gets flooded with raw data and picks up irrelevant context.
35+
### Architecture Context
36+
Webhook flow: `PaymentController``WebhookService.dispatch()` → SQS queue
37+
`WebhookWorker.process()` → external endpoint.
2038

21-
## The Solution
39+
Add retry logic in `WebhookWorker.process()` at:
40+
`src/workers/webhook_worker.ts:45-80`
2241

23-
DevsContext fetches from your tools, extracts what's relevant, and synthesizes
24-
it into a clean context block — so your AI agent knows *what* to build, *why*
25-
it was decided, and *how* it should be written.
42+
DLQ table schema in `migrations/004_webhook_dlq.sql`. [Architecture: payments-service.md]
43+
44+
### Coding Standards
45+
- Use `Result<T, WebhookError>` pattern, don't throw exceptions
46+
- Retry delays: use `calculateBackoff(attempt)` helper from `src/utils/retry.ts`
47+
- Tests: mock SQS with `@aws-sdk/client-sqs-mock`, see `tests/workers/` for examples
48+
[Standards: typescript.md, testing.md]
49+
50+
### Related Work
51+
- PROJ-456: "Payment webhook initial implementation" (Done) — base implementation
52+
- PROJ-789: "Add webhook monitoring dashboard" (In Progress) — will consume the metrics
53+
```
54+
55+
One synthesized block. Everything the AI needs to write correct code.
2656

2757
## Quick Start
2858

2959
```bash
3060
pip install devscontext
3161
devscontext init
62+
```
63+
64+
Set your credentials:
65+
```bash
66+
export JIRA_EMAIL="you@company.com"
67+
export JIRA_API_TOKEN="your-token"
68+
export ANTHROPIC_API_KEY="your-key" # for synthesis
69+
```
70+
71+
Connect to Claude Code:
72+
```bash
3273
claude mcp add devscontext -- devscontext serve
3374
```
3475

3576
Then in Claude Code:
36-
3777
```
38-
work on PROJ-1234
78+
> work on PROJ-123
3979
```
4080

41-
Claude automatically gets the full context.
81+
## Supported Sources
82+
83+
| Source | What's Fetched |
84+
|--------|----------------|
85+
| **Jira** | Ticket details, comments, linked issues, acceptance criteria |
86+
| **Fireflies** | Meeting transcripts, decisions, action items |
87+
| **Local Docs** | Architecture docs, coding standards, ADRs |
88+
89+
Coming soon: Linear, Notion, Confluence, Slack threads
4290

4391
## Configuration
4492

45-
Create a `.devscontext.yaml` file in your project root:
93+
DevsContext uses `.devscontext.yaml` in your project root:
4694

4795
```yaml
4896
adapters:
4997
jira:
5098
enabled: true
5199
base_url: "https://your-company.atlassian.net"
52-
email: "your-email@company.com"
100+
email: "${JIRA_EMAIL}"
53101
api_token: "${JIRA_API_TOKEN}"
54102

55103
fireflies:
56-
enabled: false
104+
enabled: false # Optional
57105
api_key: "${FIREFLIES_API_KEY}"
58106

59107
local_docs:
60108
enabled: true
61109
paths:
62110
- "./docs"
111+
- "./CLAUDE.md"
63112

64-
cache:
65-
ttl_seconds: 300
66-
max_size: 100
113+
synthesis:
114+
provider: "anthropic"
115+
model: "claude-3-haiku-20240307"
67116
```
68117
69-
## Available Tools
118+
See [.devscontext.yaml.example](.devscontext.yaml.example) for all options.
70119
71-
| Tool | Description |
72-
|------|-------------|
73-
| `get_task_context` | Full synthesized context for a Jira ticket |
74-
| `search_context` | Search across all sources by keyword |
75-
| `get_standards` | Coding standards from local documentation |
120+
## How It Works
121+
122+
1. **Fetch**: When you mention a ticket, DevsContext fetches from all configured sources in parallel
123+
2. **Extract**: It finds relevant content — ticket matches docs by component/label, searches meeting transcripts for keywords
124+
3. **Synthesize**: An LLM combines raw data into a structured context block with sources cited
125+
126+
No background processes. No vector database. Just on-demand fetching and synthesis.
127+
128+
## MCP Tools
129+
130+
| Tool | When to Use | Example |
131+
|------|-------------|---------|
132+
| `get_task_context` | Starting work on a ticket | "work on PROJ-123" |
133+
| `search_context` | Questions about architecture or past decisions | "how do we handle payment retries?" |
134+
| `get_standards` | Checking coding conventions | "what are our testing standards?" |
76135

77136
## Development
78137

79138
```bash
80-
# Install from source
81-
git clone https://github.com/yourusername/devscontext.git
139+
git clone https://github.com/anthropics/devscontext.git
82140
cd devscontext
83141
pip install -e ".[dev]"
84142
85-
# Run the MCP server
86-
devscontext serve
87-
88143
# Run tests
89144
pytest
90145
91-
# Linting
92-
ruff check src/
146+
# Lint
147+
ruff check . && mypy src/
93148
```
94149

95-
## Status
150+
## Contributing
151+
152+
Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
96153

97-
Early development — contributions welcome!
154+
Ideas for contributions:
155+
- New adapters (Linear, Notion, Confluence)
156+
- Better keyword extraction
157+
- Caching improvements
98158

99159
## License
100160

0 commit comments

Comments
 (0)