Skip to content

SDD Tool Roadmap v2 (Enhancement)

Document Version: v2.0 Created: 2024-12-24 Previous Documents: scaling-roadmap.md, enterprise-roadmap.md merged and reorganized


Redefining the Tool's Essence

What sdd-tool is NOT

  CI/CD tool
  Code analysis engine
  Project management tool
  Enterprise development platform

What sdd-tool IS

  A frame that forces Claude to "think in a certain way and develop in a certain order"
  Anti-vibe coding thought structuring tool
  Specification -> Design -> Task -> Code generation pipeline
  A tool for documenting agreement points between AI and humans

Core Strengths (What to Maintain)

- Improved design quality
- Early structure stabilization
- Prevention of missed considerations
- Simultaneous documentation and code generation
- Individual/small team productivity improvement

Realistic Goal Reset

Original Goals (Excessive)

Phase 0-5: Medium-scale (5-15 people)
Phase 6-10: Enterprise (15+ people, 500+ specs)

Revised Goals (Realistic)

Phase 0-2: Small-scale optimization (1-5 people) <- Strengthen current best area
Phase 3-5: Reach medium-scale (2-10 people) <- Practical ceiling
Phase 6+: Optional expansion (conditional) <- Only when needed

Suitability by Scale (Honest Assessment)

ScaleSuitabilityStrategy
1 person / Side project5/5Best area, strengthen further
Small (2-5 people)5/5Core target
Medium (5-10 people)4/5Achievable goal
Medium-large (10-20 people)3/5Feature units only
Large (20+ people)2/5Supplementary tool only
Enterprise1/5Not viable as primary tool

Phase Reorganization

Overview

+-------------------------------------------------------------+
|  Phase 0: Collaboration Foundation (Git Workflow)  [Existing] |
+-------------------------------------------------------------+
|  Phase 1: Spec Scope Separation ***                          |
|    +-- 1-G: Greenfield (Manual domain setup)      [New]      |
|    +-- 1-R: Reverse Extraction (Legacy)           [New]      |
+-------------------------------------------------------------+
|  Phase 2: Code Context Connection                  [New]      |
+-------------------------------------------------------------+
|  Phase 3: Task Graph (DAG)                         [New]      |
+-------------------------------------------------------------+
|  Phase 4: Change-based Work Guidance               [New]      |
+-------------------------------------------------------------+
|  Phase 5: Performance Optimization          [Existing adj.]   |
+-------------------------------------------------------------+
|  Phase 6+: Optional Expansion              [Existing reduced] |
+-------------------------------------------------------------+

Paths by Project Type

Greenfield (New Projects):
+---------+    +---------+    +---------+    +---------+
| Phase 0 |--->|Phase 1-G|--->| Phase 2 |--->|Phase 3-4|
|   Git   |    | Manual  |    |Code Link|    |Task DAG |
+---------+    +---------+    +---------+    +---------+

Brownfield (Legacy Projects):
+---------+    +---------+    +---------+    +---------+
| Phase 0 |--->|Phase 1-R|--->| Phase 2 |--->|Phase 3-4|
|   Git   |    | Reverse |    |Code Link|    |Task DAG |
+---------+    +---------+    +---------+    +---------+
                    |
                    v
              Serena MCP Usage
              (30+ language support)

Key Insight:

  • Phase 1-G and 1-R produce the same output (domains.yml, domain.md, spec.md)
  • Phase 1-R auto-extracts from code to generate drafts
  • Paths converge from Phase 2 (same process)

Phase 0: Collaboration Foundation (Git Workflow)

Status: Existing, content unchanged Document: scaling.md#phase-0

Summary

  • 0.1 Commit conventions (spec, spec-update, constitution types)
  • 0.2 Branch strategy (spec/domain/name pattern)
  • 0.3 Spec change workflow
  • 0.4 Git Hooks automation
  • 0.5 .gitignore and Git configuration
  • 0.6 CI integration

Priority

Difficulty: Low
Impact: High (foundation for collaboration)
Prerequisites: None

Phase 1: Spec Scope Separation ***

Determines 50% of medium-scale successTwo paths: Greenfield (manual) vs Brownfield (reverse extraction)

Problem Definition

Current:
- Single spec covers entire project
- Context explosion (Claude can't remember everything)
- Unclear impact scope on modifications
- High barrier to SDD adoption for legacy projects

Result:
- Claude says "all done" but things are missing
- Can't automatically understand existing code context
- Humans forced to be "context curators"
- Legacy projects abandon SDD adoption

Common Output (Same for 1-G and 1-R)

Both Phase 1 paths produce the same structure:

Directory Structure:

Current:
.sdd/
├── constitution.md
└── specs/
    └── <feature>/
        ├── spec.md
        ├── plan.md
        └── tasks.md

After change:
.sdd/
├── constitution.md
├── domains.yml              # Domain definitions
└── specs/
    ├── core/                # Domain
    │   ├── domain.md        # Domain overview
    │   └── data-model/      # Feature
    │       ├── spec.md
    │       └── ...
    ├── auth/                # Domain
    │   ├── domain.md
    │   ├── user-login/
    │   ├── oauth/
    │   └── session/
    └── order/               # Domain
        ├── domain.md
        ├── checkout/
        └── payment/

Domain Definition File:

yaml
# .sdd/domains.yml
domains:
  core:
    name: "Core Features"
    description: "Data models, common utilities"
    owners: ["@core-team"]

  auth:
    name: "Authentication/Authorization"
    description: "User authentication, permission management"
    owners: ["@security-team"]
    dependencies: [core]

  order:
    name: "Order/Payment"
    description: "Order processing, payment integration"
    owners: ["@commerce-team"]
    dependencies: [core, auth]

# Inter-domain dependency rules
rules:
  - from: order
    to: auth
    allowed: true
  - from: auth
    to: order
    allowed: false  # Prevent cycles

Domain Overview File:

markdown
<!-- .sdd/specs/auth/domain.md -->
# Auth Domain

## Overview
Domain responsible for user authentication and permission management

## Scope
- User login/logout
- OAuth 2.0 integration
- Session management
- Permission verification

## Dependencies
- core: User entity, common utilities

## Public Interface
- AuthService.login()
- AuthService.logout()
- AuthService.verify()
- SessionManager.create()
- SessionManager.validate()

CLI Changes

bash
# Domain management
sdd domain list                    # List domains
sdd domain show auth               # Domain details
sdd domain create billing          # New domain

# Domain-based spec creation
sdd new auth/mfa-setup             # mfa-setup spec in auth domain
sdd new order/refund               # refund spec in order domain

# Domain-based operations
sdd validate --domain auth         # Validate auth domain only
sdd status --domain order          # order domain status
sdd impact auth/user-login         # Impact within domain

# Context limiting (key!)
sdd context auth                   # Load only auth domain for Claude
sdd context auth order             # Load multiple domains
sdd context --current              # Check currently loaded context

Claude Prompt Generation Change

markdown
Current:
"Read all specs and implement"

After change:
"Current context: auth domain
- Domain overview: auth/domain.md
- Work target: auth/user-login/spec.md
- Dependencies: core domain (read-only)

Ignore other domains. Work only within auth scope."

Effects

  Claude context size controllable
  Clear "current work scope"
  Teams can work independently
  Easy to track impact scope
  Greatly reduced chance of omissions
  Legacy projects can adopt SDD (1-R)

Phase 1-G: Greenfield (Manual Domain Setup)

For new projects - Manual domain structure design

Target:

  • Projects starting fresh
  • No existing code or refactoring

Workflow:

bash
# 1. Domain design
sdd domain create core          # Core domain
sdd domain create auth          # Auth domain
sdd domain create order         # Order domain

# 2. Set domain dependencies
sdd domain link order --depends-on auth
sdd domain link auth --depends-on core

# 3. Write specs
sdd new auth/user-login         # Manual spec writing
sdd new auth/oauth-google
sdd new order/checkout

Implementation Checklist (1-G):

[ ] sdd domain create <name>
[ ] sdd domain link --depends-on
[ ] sdd new <domain>/<feature>
[ ] domains.yml manual editing support
[ ] domain.md template

Priority (1-G):

Difficulty: Low
Impact: High
Prerequisites: Phase 0

Phase 1-R: Reverse Extraction (Reverse Spec Extraction)

For legacy/brownfield - Auto-generate specs from codeCore Strategy: Serena MCP Usage

Target:

  • Projects with existing codebase
  • Legacy operating without spec documents
  • Teams wanting to lower SDD adoption barrier

Serena MCP Usage:

Serena is an MCP server for code analysis:

  30+ language support (Python, TS, Java, Go, Rust, C++ etc.)
  Symbol-level code extraction (classes, functions, variables)
  Reference/dependency relationship analysis
  IDE-level semantic analysis
  Native Claude Code/Desktop integration

Direct Implementation vs Serena Usage:

ItemDirect ImplementationSerena Usage
Development period16-23 weeks4-7 weeks
Supported languagesTS/JS only30+
AST parsingImplement directlyNot needed
MaintenanceLanguage-specific updatesSerena handles

Workflow:

bash
# 1. Scan codebase
sdd reverse scan

# Output:
# src/
# +-- auth/ (3 files, 450 LOC)
# +-- order/ (5 files, 890 LOC)
# +-- core/ (8 files, 1200 LOC)
# Suggested domains: auth, order, core

# 2. Extract specs (using Serena MCP)
sdd reverse extract --depth deep --ai

# Output:
# .sdd/
# +-- domains.yml (auto-generated)
# +-- specs/
#     +-- auth/
#     |   +-- domain.md
#     |   +-- user-authentication/
#     |       +-- spec.md (confidence: 72%)
#     +-- order/
#         +-- ...

# 3. Review and finalize
sdd reverse review              # Interactive review
sdd reverse finalize            # Finalize

Extraction Levels:

LevelTargetAutomationConfidence
StructureDirectory -> Domain100%High
InterfaceFunction signatures, types90%High
BehaviorBusiness logic, rules70%Medium
Intent"Why implemented this way?"50%Low (AI required)

Architecture:

+-----------------------------------------------------+
|                 sdd reverse extract                   |
+-----------------------------------------------------+
|  SDD Tool        Serena MCP           SDD Tool       |
|  +---------+     +-------------+     +-----------+   |
|  | Scanner |--->| Symbol/Ref  |--->| Generator |   |
|  |(file    |     | Extract(30+)|     |(Spec gen) |   |
|  | list)   |     +-------------+     +-----------+   |
|  +---------+           |                             |
|                        v                             |
|              Claude (Intent inference)               |
+-----------------------------------------------------+

Risk Mitigation:

typescript
// Abstraction layer to manage Serena dependency
interface CodeAnalyzer {
  findSymbols(query: string): Promise<Symbol[]>;
  findReferences(symbol: string): Promise<Reference[]>;
}

class SerenaAnalyzer implements CodeAnalyzer { ... }
class FallbackAnalyzer implements CodeAnalyzer { ... }  // TS only

Implementation Checklist (1-R):

[ ] Serena MCP client integration
[ ] sdd reverse scan command
[ ] sdd reverse extract command
  [ ] --depth (shallow/medium/deep)
  [ ] --ai (Claude intent inference)
[ ] sdd reverse review (interactive)
[ ] sdd reverse finalize
[ ] Confidence display system
[ ] .reverse-meta.json generation
[ ] Abstraction layer (Serena fallback)

Priority (1-R):

Difficulty: Medium (reduced thanks to Serena)
Impact: *** Highest (removes legacy adoption barrier)
Prerequisites: Phase 0, Serena MCP installation

Detailed Plan: Reverse Spec Extraction Plan


Phase 1 Common Implementation

[ ] domains.yml schema definition
[ ] domain.md template
[ ] sdd domain list/show commands
[ ] sdd context command (context limiting)
[ ] Inter-domain dependency validation
[ ] Slash command updates

Phase 1 Priority Summary

PathTargetDifficultyImpactPrerequisites
1-GGreenfieldLowHighPhase 0
1-RBrownfieldMedium*** HighestPhase 0 + Serena

Recommended Implementation Order:

  1. Phase 1 Common (domains.yml, domain.md) - First
  2. Phase 1-G (manual domain setup) - Next (simple)
  3. Phase 1-R (reverse extraction) - Last (requires Serena integration)

Phase 2: Code Context Connection

New addition - Solve existing code omission problem

Problem Definition

Current:
- Only specs exist, no connection to existing code
- Claude doesn't know "which files to modify"
- Missing change targets during maintenance

Result:
- "Already exists in code but creates new one"
- "Missed files that should be modified"
- Humans must manually provide file lists

Add code links to spec files:

yaml
# spec.md frontmatter
---
id: auth/user-login
status: approved
code_links:
  implements:
    - src/auth/AuthService.ts
    - src/auth/LoginController.ts
  tests:
    - tests/auth/login.test.ts
  related:
    - src/core/User.ts
    - src/session/SessionManager.ts
---

Code Context Index (lightweight):

json
// .sdd/code-index.json (auto-generated)
{
  "files": {
    "src/auth/AuthService.ts": {
      "type": "service",
      "exports": ["AuthService", "login", "logout", "verify"],
      "specs": ["auth/user-login", "auth/oauth"]
    },
    "src/auth/LoginController.ts": {
      "type": "controller",
      "exports": ["LoginController"],
      "specs": ["auth/user-login"]
    }
  },
  "modules": {
    "auth": ["AuthService", "LoginController", "TokenRepo"],
    "order": ["OrderService", "PaymentAdapter"]
  }
}

CLI Changes

bash
# Code index management
sdd code index                     # Create/update code index
sdd code index --watch             # Auto-update on change detection
sdd code show auth/user-login      # Show linked code for spec

# Link management
sdd link auth/user-login src/auth/AuthService.ts
sdd unlink auth/user-login src/old/OldAuth.ts

# Impact analysis (including code)
sdd impact auth/user-login --code  # Impact analysis including code files

Include code context in Claude prompts:

markdown
## Current Task: auth/user-login modification

### Files to Modify
- src/auth/AuthService.ts (implements)
- src/auth/LoginController.ts (implements)

### Related Files (reference only)
- src/core/User.ts
- src/session/SessionManager.ts

### Existing Code Signatures
AuthService:
- login(email: string, password: string): Promise<Session>
- logout(sessionId: string): Promise<void>
- verify(token: string): Promise<User>

Modify these files. Do not touch other files.

Implementation Checklist

[ ] code_links frontmatter schema
[ ] sdd code index command
[ ] Auto-generate code index (AST parsing)
[ ] sdd link/unlink commands
[ ] sdd impact --code extension
[ ] Insert code context into Claude prompts
[ ] Comment-based reverse link (@spec auth/user-login)

Priority

Difficulty: Medium
Impact: High (makes maintenance realistic)
Prerequisites: Phase 1

Phase 3: Task Graph (DAG)

New addition - Linear tasks -> Dependency graph

Problem Definition

Current:
- tasks.md is a linear checklist
- "When 1 is done, do 2, when 2 is done, do 3"

Problem:
- Parallel work not possible
- Difficult to distribute work among team members
- Unclear to Claude "what to do first now"

Solution: DAG-based Task Management

tasks.md format change:

yaml
# tasks.md
tasks:
  - id: AUTH-01
    title: "Define User entity"
    depends_on: []
    assignee: "@alice"
    status: done

  - id: AUTH-02
    title: "AuthService interface"
    depends_on: [AUTH-01]
    assignee: "@bob"
    status: in_progress

  - id: AUTH-03
    title: "LoginController implementation"
    depends_on: [AUTH-02]
    status: pending

  - id: AUTH-04
    title: "OAuth integration"
    depends_on: [AUTH-02]  # Can run parallel with AUTH-03!
    status: pending

  - id: AUTH-05
    title: "Integration tests"
    depends_on: [AUTH-03, AUTH-04]  # Both must finish to start
    status: blocked

Visualization:

AUTH-01 (User entity)
    |
    v
AUTH-02 (AuthService)
    |
    +------------+
    v            v
AUTH-03       AUTH-04
(Controller)  (OAuth)
    |            |
    +-----+------+
          v
      AUTH-05
    (Integration tests)

CLI Changes

bash
# Task status
sdd tasks auth/user-login          # Task list (graph display)
sdd tasks auth/user-login --ready  # Tasks ready to start now
sdd tasks auth/user-login --blocked # Blocked tasks

# Task progress
sdd task start AUTH-03             # Start task
sdd task done AUTH-03              # Complete task
sdd task block AUTH-05 "Waiting for AUTH-04"

# Graph visualization
sdd tasks auth/user-login --graph  # Mermaid output
sdd tasks auth/user-login --visual # View in browser

Claude prompt improvement:

markdown
## Currently Executable Tasks

Choose one of the following tasks to implement:

1. AUTH-03: LoginController implementation
   - Prerequisite complete: AUTH-02
   - Expected file: src/auth/LoginController.ts

2. AUTH-04: OAuth integration
   - Prerequisite complete: AUTH-02
   - Expected file: src/auth/OAuthProvider.ts

## Blocked Tasks (not yet)
- AUTH-05: Integration tests (needs AUTH-03, AUTH-04 complete)

Implementation Checklist

[ ] tasks.yaml schema (DAG structure)
[ ] Dependency validation (cycle detection)
[ ] sdd tasks --ready command
[ ] sdd task start/done/block
[ ] Mermaid graph output
[ ] Browser visualization
[ ] Highlight executable tasks in Claude prompts

Priority

Difficulty: Medium
Impact: High (team parallel work)
Prerequisites: Phase 1

Phase 4: Change-based Work Guidance

New addition - Full regeneration NO, process only changes YES

Problem Definition

Current:
- When spec changes, "review everything again"
- Claude tries to regenerate unchanged parts too

Problem:
- Unnecessary token consumption
- Risk of overwriting existing code
- Hard to understand "what changed"

Solution: Spec Diff-based Work Guidance

Spec change detection:

bash
sdd diff auth/user-login           # Changes from last commit
sdd diff auth/user-login --staged  # Changes from staging

Change output example:

diff
## Requirements

- REQ-001: Password must be 8 chars
+ REQ-001: Password must be 12 chars (MODIFIED)

+ REQ-004: Support biometric login (ADDED)

- REQ-003: Remember me checkbox (REMOVED)

Auto task generation:

bash
sdd diff auth/user-login --tasks   # Generate tasks based on changes
yaml
# Auto-generated tasks
tasks:
  - id: CHANGE-01
    type: modify
    target: REQ-001
    description: "Change password length 8 -> 12"
    affected_code:
      - src/auth/validators/password.ts

  - id: CHANGE-02
    type: add
    target: REQ-004
    description: "Add biometric login"

  - id: CHANGE-03
    type: remove
    target: REQ-003
    description: "Remove Remember me feature"
    affected_code:
      - src/auth/LoginController.ts
      - src/auth/components/RememberMe.tsx

Claude prompt:

markdown
## Spec Changes (process only these)

### Modified: REQ-001
Before: Password must be 8 chars
After: Password must be 12 chars

Affected file: src/auth/validators/password.ts
-> Change PASSWORD_MIN_LENGTH to 12 in this file.

### Added: REQ-004
New requirement: Support biometric login
-> New file creation needed.

### Removed: REQ-003
Removed: Remember me checkbox
Affected file: src/auth/LoginController.ts
-> Remove rememberMe related code.

Do not modify existing code beyond the changes above.

Implementation Checklist

[ ] sdd diff command (spec diff)
[ ] Change type classification (ADDED/MODIFIED/REMOVED)
[ ] sdd diff --tasks (auto task generation)
[ ] Auto-link affected code (Phase 2 integration)
[ ] Highlight only changes in Claude prompts
[ ] Enforce "don't touch unchanged parts"

Priority

Difficulty: Medium
Impact: High (maintenance core)
Prerequisites: Phase 2

Phase 5: Performance Optimization

Existing Phase 1 adjusted - Priority lowered

Changes

Original: Phase 1 (top priority)
Changed: Phase 5 (after Phase 1-4)

Reason:
- Performance issues minimal with under 100 specs
- Scope separation (Phase 1) more important than performance
- Works fine without indexing at medium scale

Content (Reduced)

5.1 Index Cache (optional)
    - .sdd/index.json
    - Only needed for 100+ specs

5.2 Search Optimization (optional)
    - Full-text search
    - Query DSL

Priority

Difficulty: Medium
Impact: Medium (meaningful only at 100+ specs)
Prerequisites: Phase 1-4

Phase 6+: Optional Expansion (Significantly Reduced)

Re-evaluation of existing Phase 2-10

Realistic Assessment

Original plan:
- Domain separation -> Moved to Phase 1 (essential)
- Review workflow -> Deleted (Git PR sufficient)
- External integration -> Reduced (GitHub only)
- Dashboard -> Deleted (over-engineering)
- Server-based -> Deleted (out of scope)
- RBAC -> Deleted (out of scope)
- Audit logs -> Deleted (out of scope)

What Remains (Optional)

6.1 GitHub Issues Integration (optional)
    - Spec -> Issue sync
    - Simple level only

6.2 VSCode Extension (optional)
    - Spec preview
    - @spec autocomplete

6.3 Multi-agent (future)
    - Separate Spec Agent, Architect Agent
    - Essential for large-scale but currently out of scope

Deleted/Deferred Items

  SDD Server (platformization needed = new product)
  PostgreSQL/Elasticsearch (over-engineering)
  RBAC/Audit logs (enterprise = out of scope)
  Real-time collaboration (Git sufficient)
  Web dashboard (terminal sufficient)

Final Priority Summary

PhaseFeatureDifficultyImpactRequired
0Git WorkflowLowHighRequired
1 CommonDomain SchemaLowHighRequired
1-GGreenfield (manual)LowHighRequired
1-RBrownfield (reverse)Medium*** HighestConditional
2Code Context ConnectionMediumHighRequired
3Task Graph (DAG)MediumHighRequired
4Change-based Work GuidanceMediumHighRequired
5Performance OptimizationMediumMediumConditional
6GitHub IntegrationMediumMediumOptional
6VSCode ExtensionHighHighOptional

Dependency Graph

Phase 0 (Git)
    |
    +------------------------+
    v                        v
Phase 1 Common <-------------+
(domains.yml, domain.md)
    |
    +------------------+
    v                  v
Phase 1-G          Phase 1-R
(manual setup)     (reverse, Serena)
    |                  |
    +--------+---------+
             v
         Phase 2 <-------- (convergence point)
    (Code context connection)
             |
             v
         Phase 3
      (Task DAG)
             |
             v
         Phase 4
    (Change-based work)
             |
    +--------+--------+
    v                 v
Phase 5            Phase 6
(Performance,      (Expansion,
 conditional)       optional)

Milestones

v1.x: Small-scale Optimization (Current)

  Basic CLI
  Spec validation (RFC 2119, GIVEN-WHEN-THEN)
  Constitution system
  Impact analysis (basic)
  Export (HTML/JSON/MD)

v2.0: Medium-scale Foundation (Phase 0 + 1)

[ ] Phase 0: Git Workflow
[ ] Phase 1 Common: domains.yml, domain.md schema
[ ] Phase 1-G: Greenfield domain setup

Goal: Domain-based spec management in new projects

v2.1: Legacy Adoption Path (Phase 1-R)

[ ] Serena MCP integration
[ ] Phase 1-R: Reverse spec extraction
  [ ] sdd reverse scan/extract/review/finalize
  [ ] Confidence system
  [ ] Review workflow

Goal: Remove legacy project SDD adoption barrier

v2.5: Maintenance Enhancement (Phase 2 + 3)

[ ] Phase 2: Code context connection
  [ ] spec <-> code link
  [ ] sdd code index
[ ] Phase 3: Task graph (DAG)
  [ ] Dependency-based tasks
  [ ] Parallel work support

Goal: Stable operation for 2-5 person teams

v3.0: Medium-scale Completion (Phase 4)

[ ] Phase 4: Change-based work guidance
  [ ] sdd diff (spec change detection)
  [ ] Change -> auto task

Goal: Scale to 5-10 person teams

v3.5: Optional Expansion (Phase 5-6)

[ ] Phase 5: Performance optimization (conditional)
[ ] Phase 6: GitHub integration, VSCode extension (optional)

Goal: Usability improvement and ecosystem expansion


Relationship with Existing Documents

Existing DocumentStatusNotes
scaling-roadmap.mdMaintainedReference for Phase 0 details
enterprise-roadmap.mdDeferredOut of scope, reference only
limitations.mdMaintainedExplicitly state realistic limits
reverse-spec-plan.mdNewPhase 1-R detailed plan
roadmap-v2.md (this document)NewEnhanced roadmap (integrated)

Core Message

This Tool's Proper Position

"A small but smart scalpel"
"Not a chainsaw for cutting enterprise"

Realistic Goals

The best tool for small to medium new development
Limited as a general-purpose large project framework

What to Focus On

  Phase 1-G: Domain separation (Greenfield foundation)
  Phase 1-R: Reverse extraction (Remove brownfield adoption barrier)
  Phase 2-4: Existing code connection + change management
  Give up enterprise feature ambitions

MIT License