future

Navigate and manage the future/ directory — view dependency graphs, filter by arc, find unblocked futures, and identify what to work on next. Use when deciding what to work on, exploring planned work, or checking dependencies between futures.

654 stars

Best use case

future is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Navigate and manage the future/ directory — view dependency graphs, filter by arc, find unblocked futures, and identify what to work on next. Use when deciding what to work on, exploring planned work, or checking dependencies between futures.

Teams using future should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/future/SKILL.md --create-dirs "https://raw.githubusercontent.com/dropseed/plain/main/.claude/skills/future/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/future/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How future Compares

Feature / AgentfutureStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Navigate and manage the future/ directory — view dependency graphs, filter by arc, find unblocked futures, and identify what to work on next. Use when deciding what to work on, exploring planned work, or checking dependencies between futures.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Future

The `future/` directory is a knowledge graph of where Plain is headed.

## Structure

```
future/
  postgres-first-data-layer/
    ARC.md                            # vision + numbered sequence
    models-explicit-create-update.md
    ...
  real-time-server/
    ARC.md
    server-h2-websockets.md
    ...
```

- **Arc directories** — narrative groupings, the big stories of where Plain is headed
- **ARC.md** — each arc's vision and numbered sequence of futures
- **Future files** — each one describes a possible future state of the project

Every future must belong to an arc — no top-level orphan files. If a future doesn't fit an existing arc, create a new arc for it.

## Futures

Individual markdown files with optional YAML frontmatter:

```yaml
---
branch: pool
related:
  - server-performance
depends_on:
  - db-connection-pool
---

# Title

Content...
```

### Frontmatter fields

- `branch` (optional): git branch with work-in-progress for this future. One branch per future — if a future needs multiple branches, split the future.
- `related` (optional): linked futures — conceptual connections (bidirectional)
- `depends_on` (optional): hard dependency — this future is blocked until the dependency is done. Mostly used for cross-arc blocks.

### Naming

- Don't prefix filenames with `plain-` — use `models-cursor-paginator.md` not `plain-models-cursor-paginator.md`
- `related` and `depends_on` reference filenames without `.md`

## Arcs

Arc membership is determined by directory. Each arc directory contains an `ARC.md` with:

1. **Vision** — what Plain looks like at the end of this arc
2. **Sequence** — checklist of linked futures in intended order (place near the top, right after the vision)

Format: `- [ ] [future-name](future-name.md)` — checked when done. The sequence is the editorial ordering — "this is the path we'd like to take." `depends_on` is for hard blocks that can't be reordered. Any deeper context (research, references, industry analysis) goes after the sequence.

Current arcs:

- `migration-rethink` — convergence, migration safety, migration format
- `model-api` — explicit create/persist, PK prevention, default querysets
- `related-fields` — descriptor consolidation, deferred FK loading, N+1 prevention
- `query-api` — typed query interface, cursor pagination
- `postgres-native` — connection pooling, psycopg3, native schema, FTS, DB-level ON DELETE
- `field-api` — field parameter cleanup (choices, max_length, enums)
- `real-time-server` — HTTP/2, websockets, realtime, performance
- `production-hardening` — security, compliance, operational maturity
- `uncategorized` — futures that don't belong to a specific arc yet

## Scripts

Run via `.claude/skills/future/future <command>`:

| Command       | Purpose                                                 |
| ------------- | ------------------------------------------------------- |
| `next`        | Unblocked futures sorted by downstream impact (default) |
| `graph`       | Full dependency tree from roots to leaves               |
| `list`        | All futures with status (root/ready/blocked)            |
| `show <name>` | Details for one future (partial match ok)               |
| `arcs`        | List all arcs with futures in sequence order            |

All commands support `--json` for structured output.

### Filters

- `list --arc <term>` — filter by arc (e.g. `postgres`, `server`)
- `list --search <term>` — search titles and filenames

## Presenting results

**Always summarize command output for the user.** The raw terminal output is not visible to them. After running any script command, present the results in your own words using markdown — describe what the data shows, highlight key patterns (blocked items, cross-arc dependencies, what's next), and provide context. Don't just run a command and stop.

## Workflow

When the user asks about priorities or what to do next:

1. Run `arcs` to see the full picture — all arcs with futures in sequence order
2. Run `next` to see unblocked futures ranked by impact
3. Use `show <name>` to dive into a specific future's dependencies and context
4. Read the actual future file for the full content
5. Present a summary to the user — describe each arc, what's blocked and why, and what's actionable

When the user asks to start working on a future:

1. Run `show <name>` to check dependencies and status
2. Read the future file for full context
3. Read the arc's `ARC.md` for the broader vision
4. Read any `related` or `depends_on` futures that provide useful background
5. Proceed with implementation

When a future is completed:

1. Delete the future file
2. If the entire arc is complete (all futures done), delete the arc directory
3. Clean up `related` and `depends_on` references to deleted futures in other files
4. Update the arc list in this skill if an arc was removed

When creating a new future:

1. Place it in an arc directory — every future must belong to an arc. If no arc fits, create a new one.
2. Add it to the arc's `ARC.md` sequence in the right position
3. Add `related` to link conceptually connected futures
4. Add `depends_on` only for hard cross-arc blocks

Related Skills

plainx-release

654
from dropseed/plain

Releases plainx packages with version suggestions, changelog generation, and git tagging. Use when releasing a package to PyPI.

release

654
from dropseed/plain

Releases Plain packages with intelligent version suggestions and parallel release notes generation. Use when releasing packages to PyPI.

plain-upgrade

654
from dropseed/plain

Upgrades Plain packages and applies required migration changes. Use when updating to newer package versions.

plain-postgres-doctor

654
from dropseed/plain

Check overall database health — schema correctness and operational health. Use when asked to check the database, validate schema, optimize indexes, or diagnose Postgres problems.

plain-portal

654
from dropseed/plain

Open a remote Python shell on a production machine via encrypted tunnel. Use when you need to inspect production data, debug issues, run queries, or transfer files.

plain-optimize

654
from dropseed/plain

Captures and analyzes performance traces to identify slow queries and N+1 problems. Use when a page is slow, there are too many queries, or the user asks about performance.

plain-install

654
from dropseed/plain

Installs Plain packages and guides through setup steps. Use when adding new packages to a project.

plain-guide

654
from dropseed/plain

Answer questions about the Plain framework by researching docs and source code. Use when asked "how do I...", "does Plain support...", or "how does X work?" questions.

plain-bug

654
from dropseed/plain

Submit a bug report for the Plain framework. Use when the user wants to report a bug, error, or unexpected behavior. Collects context and creates a GitHub issue.

soft-predict-future

2707
from davepoon/buildwithclaude

Activate this skill for ANY future-oriented question. Triggers include: "Will [X]?", "Who will win [X]?", "What happens to [X]?", "Can [X] succeed?", "What's the future of X?", foresight analysis, scenario planning, STEEEP analysis, futures cone, prediction requests, or any question about a future outcome. Year is NOT required — the engine infers the horizon. Also activate when the user says "predict", "forecast", "what are the odds", "scenario analysis", or asks about competitive races, technology adoption, geopolitical shifts, or market dominance. REQUIRES web search to be enabled — if web search is unavailable, tell the user before proceeding.

hard-predict-future

2707
from davepoon/buildwithclaude

Activate this agent for any future-oriented question that requires deep quantitative analysis, historical precedents, and structured scenario planning. Triggers include: "Will [X]?", "Who will win [X]?", "What happens to [X]?", prediction requests with high stakes, foresight analysis, STEEEP scenario planning, futures cone, competitive race analysis, technology adoption curves, geopolitical shifts, or any question about a future outcome that deserves rigorous multi-step analysis. This agent runs a 12-step deterministic pipeline: Claude handles intelligence, Python handles all arithmetic. Year is NOT required — the engine infers the horizon. REQUIRES: Bash tool + Python 3.x. Not compatible with claude.ai web (use Soft Predict Future instead).

compose-multiplatform-patterns

144923
from affaan-m/everything-claude-code

KMP项目中的Compose Multiplatform和Jetpack Compose模式——状态管理、导航、主题化、性能优化和平台特定UI。