├── .github └── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── .specstory └── history │ ├── untitled-1.md │ └── untitled.md ├── GOOD.md └── README.md /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "[BUG] " 5 | labels: bug 6 | assignees: belucid, tenpaiyomi 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots & Relevant Logs** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Your System (please complete the following information):** 27 | - [ ] SpecStory for Cursor 28 | - [ ] SpecStory for GitHub Copilot (VSCode) 29 | - IDE Version: 30 | - SpecStory Extension Version: [e.g. 0.11.0] 31 | - OS: [e.g. iOS] 32 | 33 | **Additional context** 34 | Add any other context about the problem here. 35 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "[FEATURE REQUEST]" 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to functionality you wish existed or other editor support?** 11 | A clear and concise description of what the ask is. 12 | 13 | **Is your feature request related to a problem? Please describe.** 14 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 15 | 16 | **Describe the solution you'd like** 17 | A clear and concise description of what you want to happen. 18 | 19 | **What version of SpecStory do you currently use (if applicable)?** 20 | - [ ] SpecStory for Cursor 21 | - [ ] SpecStory for GitHub Copilot (VSCode) 22 | 23 | **Additional context** 24 | Add any other context about the desire or problem here. More context always helps! 25 | -------------------------------------------------------------------------------- /.specstory/history/untitled-1.md: -------------------------------------------------------------------------------- 1 | ## SpecStory 2 | 3 | -------------------------------------------------------------------------------- /.specstory/history/untitled.md: -------------------------------------------------------------------------------- 1 | ## SpecStory 2 | 3 | -------------------------------------------------------------------------------- /GOOD.md: -------------------------------------------------------------------------------- 1 | 2 | # GOOD: A companion for GIT 3 | 4 | When AI agents are generating some, most, or all of your code, then occasional git commits of the resulting source code aren't sufficient. You also need a tool that ties the generated code back to the prompts and AI interactions that generated it. 5 | 6 | Here’s a short technical explainer video of GOOD, a Git companion designed for this. 7 | 8 | 9 | https://github.com/user-attachments/assets/ffc355ef-2ab7-45e1-9564-a350d0ea42c3 10 | 11 | 12 | # How GOOD enhances GIT 13 | 14 | | GOOD Capability | How It Complements Git | 15 | | --- | --- | 16 | | Tracks AI Responses | Each AI response is a versioned node, like a commit, but tied to a prompt rather than just a diff | 17 | | Preserves Intent | Stores the natural language prompt that led to code generation, ensuring reproducibility and traceability | 18 | | Links Human + AI Work | Anchors connect human edits to related AI suggestions and Git commits, offering bi-directional traceability | 19 | | Maintains Dual Repositories | GOOD runs a "shadow Git" that mirrors the Git repo but with AI prompt-intent-output context | 20 | | Improves Transparency | Developers can audit or revisit why code was generated, not just what changed | 21 | | Boosts Collaboration | Others can reuse prompts or understand design decisions more easily across contributors | 22 | 23 | # Call For Collaborators 24 | 25 | ## GOOD 26 | If you are working on a team that’s generating a lot of code with Cursor (or other AI IDEs), and struggling with understanding the intent behind all that code, we’d love some early users to work with us on alpha versions of GOOD. 27 | 28 | 👉 [Drop us a line in this GitHub Discussion](https://github.com/specstoryai/getspecstory/discussions/51) 29 | 30 | ## Use Case Design Partners 31 | 32 | If you're in charge of driving AI dev tool adoption at your company and are interested in ways to drive overall productivity we're actively seeking design partners for SpecStory for Teams. 33 | 34 | 👉 [Apply to be a Design Partner](https://specstory.com/teams) 35 | 36 | 37 | # How GOOD works 38 | 39 | GOOD mirrors the codebase, and the codebase's git repository with a "shadow" codebase and a "shadow" git repository. The difference is that the "shadow" git repository microversions the AI generated changes to files, adding data about the prompt that caused the change in the commit message. 40 | 41 | ## Scenario 1 42 | 43 | In the video we walk through this scenario and its here for your reference: 44 | 45 | Without git: 46 | 47 | | Change | Prior | File | Line | Git Commit | Shadow Commit | 48 | |--------|------------|-------------|------|---------------|---------------| 49 | | AI | New | ai-1.txt | 1 | No | a0 a1 | 50 | | AI | AI | ai-1.txt | 2 | No | a0 a1 | 51 | | AI | Manual | mixed-1.txt | 2 | No | a2 | 52 | | Manual | New/Manual | mixed-1.txt | 1 | No | a2 | 53 | | Manual | AI | mixed-1.txt | 3 | No | a2 | 54 | 55 | With git: 56 | 57 | | Change | Prior | File | Line | Git Commit | Shadow Commit | 58 | |--------|--------|-------------------------|------|---------------|---------------| 59 | | AI | New | ./with-git/ai-2.txt | 1 | g0 g1 | a3 a4 a5 | 60 | | AI | AI | ./with-git/ai-2.txt | 2 | g0 g1 | a3 a4 a5 | 61 | | AI | Manual | ./with-git/mixed-2.txt | 2 | g0 g1 | a6 | 62 | | Manual | New | ./with-git/manual-2.txt | 1 | g0 g1 | | 63 | | Manual | AI | ./with-git/mixed-2.txt | 3 | g0 g1 | a6 | 64 | | Manual | Manual | ./with-git/manual-2.txt | 2 | g0 g1 | | 65 | 66 | ## Match Validation 67 | 68 | This section contains a markdown table of match checks and what origin they should report for each line checked. The "Lineage" and "Comment" columns are just for understanding, and are not used in the check. 69 | 70 | | File | Line | Lineage | Origin | Comments | 71 | |-------------------------|------|------------------------|--------|----------| 72 | | ai-1.txt | 1 | a0 | a0 | Case 0 | 73 | | ai-1.txt | 2 | a0 → a1 | a1 | Case 0 | 74 | | mixed-1.txt | 1 | m0 | ? | Case 2 | 75 | | mixed-1.txt | 2 | m0 → a2 | a2 | Case 0 | 76 | | mixed-1.txt | 3 | m0 → a2 → m1 | ? | Case 2 | 77 | | manual-1.txt | 1 | m0 | ? | Case 6 | 78 | | ./with-git/ai-2.txt | 1 | a3 → g0 → g1 | a3 | Case 0 | 79 | | ./with-git/ai-2.txt | 2 | a3 → a4 → g0 → g1 | a4 | Case 0 | 80 | | ./with-git/ai-2.txt | 3 | a3 → g0 → a5 → g1 | a5 | Case 0 | 81 | | ./with-git/mixed-2.txt | 1 | m2 → g0 → g1 | g0 | Case 1 | 82 | | ./with-git/mixed-2.txt | 2 | m2 → g0 → a6 → g1 | a6 | Case 0 | 83 | | ./with-git/mixed-2.txt | 3 | m2 → g0 → a6 → m3 → g1 | g1 | Case 1 | 84 | | ./with-git/manual-2.txt | 1 | m2 → g0 → g1 | g0 | Case 4 | 85 | | ./with-git/manual-2.txt | 2 | m2 → g0 → m3 → g1 | g1 | Case 4 | 86 | | ./with-git/manual-2.txt | 3 | m2 → g0 → g1 → m4 | ? | Case 5 | 87 | 88 | ## Creation Sequence 89 | 90 | This section contains the sequence of changes that constitute this scenario. Changes are either `a`I, `m`anual, or `g`it. And followed by a 0-based sequential number (e.g. g0, g1, g2). 91 | 92 | Available actions for `a` and `m` are `create`, `modify`, `delete`. For `g` is `commit`. 93 | 94 | The `create` action is followed by a `line`/`lines` parenthetical which indicates the lines created in the file, these can be either `1` or a range from `1-n`. 95 | 96 | The `modify` action is followed by a `line`/`lines` parenthetical which indicates the lines modified in the file, these can be singular, comma delimitted, or a range. 97 | 98 | **m0** 99 | create manual-1.txt (line 1) 100 | create mixed-1.txt (lines 1-3) 101 | 102 | **a0** 103 | create ai-1.txt (lines 1-2) 104 | 105 | **a1** 106 | modify ai-1.txt (line 2) 107 | 108 | **a2** 109 | modify mixed-1.txt (line 2, 3) 110 | 111 | **m1** 112 | modify mixed-1.txt (line 3) 113 | 114 | **m2** 115 | create ./with-git/manual-2.txt (lines 1-2) 116 | create ./with-git/mixed-2.txt (lines 1-3) 117 | 118 | **a3** 119 | create ./with-git/ai-2.txt (lines 1-3) 120 | 121 | **a4** 122 | modify ./with-git/ai-2.txt (line 2) 123 | 124 | **g0** 125 | commit ./with-git/ai-2.txt 126 | commit ./with-git/manual-2.txt 127 | commit ./with-git/mixed-2.txt 128 | 129 | **a5** 130 | modify ./with-git/ai-2.txt (line 3) 131 | 132 | **a6** 133 | modify ./with-git/mixed-2.txt (line 2) 134 | 135 | **m3** 136 | modify ./with-git/mixed-2.txt (line 3) 137 | modify ./with-git/manual-2.txt (line 2) 138 | 139 | **g1** 140 | commit ./with-git/ai-2.txt 141 | commit ./with-git/mixed-2.txt 142 | commit ./with-git/manual-2.txt 143 | 144 | **m4** 145 | modify ./with-git/manual-2.txt (line 3) 146 | 147 | 148 | 149 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | SpecStory 2 | 3 | [![Installs](https://img.shields.io/endpoint?url=https%3A%2F%2Fspecstory.com%2Fapi%2Fbadge%3Fstat%3Dinstalls&style=flat-square)](https://specstory.com/api/badge?stat=installs) 4 | [![Active Users](https://img.shields.io/endpoint?url=https%3A%2F%2Fspecstory.com%2Fapi%2Fbadge%3Fstat%3DactiveUsers&style=flat-square)](https://specstory.com/api/badge?stat=activeUsers) 5 | [![Sessions Saved](https://img.shields.io/endpoint?url=https%3A%2F%2Fspecstory.com%2Fapi%2Fbadge%3Fstat%3DsessionsSaved&style=flat-square)](https://specstory.com/api/badge?stat=sessionsSaved) 6 | [![Rules Generated](https://img.shields.io/endpoint?url=https%3A%2F%2Fspecstory.com%2Fapi%2Fbadge%3Fstat%3DrulesGenerated&style=flat-square)](https://specstory.com/api/badge?stat=rulesGenerated) 7 | 8 | SpecStory is a Visual Studio Code extension that makes it easy to **save, search and share your AI chat history.** 9 | - It exports your AI chats in searchable structured Markdown that you can version. 10 | - Never lose a great solution, easily share interactions, and use conversation history to refine custom instructions and project rules. 11 | 12 | We support [Cursor IDE](https://www.cursor.com/) and [GitHub Copilot](https://github.com/features/copilot) as of release `v0.11.0` [(changelog)](https://marketplace.visualstudio.com/items/SpecStory.specstory-vscode/changelog). 13 | 14 | - For Cursor: It is tested to work for `Version: 0.43.6` and later 15 | - For Copilot: It is tested to work for `Version: 1.300.0` and later 16 | 17 | When enabled, SpecStory automatically saves every AI chat to your local project's `.specstory` directory. 18 | 19 | To learn about additional features, check out our [website](https://specstory.com/) and read the [docs](https://docs.specstory.com/introduction). 20 | 21 | ## Getting Started 22 | 23 | 1️⃣ We recommend installing directly from the Extension Marketplace in your preferred editor. 24 | 25 | | Step | GitHub Copilot | Cursor | Install from VSIX | 26 | |------|---------------|--------|------------------| 27 | | 1 | Open VSCode with GitHub Copilot installed and activated. | Open Cursor. | Make sure you're on the latest version of [GitHub Copilot](https://github.blog/changelog/label/copilot/) or [Cursor](https://www.cursor.com/changelog). | 28 | | 2 | Search for **SpecStory** in the Extensions Marketplace (Ctrl/CMD-Shift-X). | Search for **SpecStory** in the Extensions Marketplace (Ctrl/CMD-Shift-X). | Download our extension: [specstory-vscode-latest.vsix](https://static.specstory.com/vscode-extension/releases/specstory-vscode-latest.vsix) | 29 | | 3 | Click **Install**. Consult our [Changelog](https://marketplace.visualstudio.com/items/SpecStory.specstory-vscode/changelog) to make sure you're on the latest version. | Click **Install**. Consult our [Changelog](https://marketplace.visualstudio.com/items/SpecStory.specstory-vscode/changelog) to make sure you're on the latest version. | From either editor, pop open the Command Palette (Ctrl/CMD-Shift-P) and choose `Extensions: Install from VSIX…`. | 30 | | 4 | Once installed, SpecStory automatically saves your Copilot chats to the `.specstory` folder in your project. | Once installed, SpecStory automatically saves your Cursor chats to the `.specstory` folder in your project. | To verify the installation, open the Command Palette again (Ctrl/CMD-Shift-P) and type `SpecStory`. You should see the available commands show up. | 31 | 32 | > [!NOTE] 33 | > As a Cursor user, if you try to install from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=SpecStory.specstory-vscode) website banner you might find yourself in a state where VSCode has SpecStory installed but Cursor doesn't. [It makes for a bad time](https://github.com/specstoryai/getspecstory/issues/8) 34 | 35 | 2️⃣ Take a quick spin through our [docs](https://docs.specstory.com/introduction), they explain installation details in more depth. 36 | 37 | 3️⃣ Love the extension? Help others discover their AI assistant's memory upgrade by dropping a quick [review](https://marketplace.visualstudio.com/items?itemName=SpecStory.specstory-vscode&ssr=false#review-details)! 🧠 38 | 39 | ## Filing issues 40 | 41 | > [!NOTE] 42 | The extension is in rapid, active development. If you're not on `Cursor Version: 0.43.6` or later you might experience errors due to the way versions of Cursor prior to `0.43.5` stored chat and composer data that have since changed. 43 | 44 | We are actively monitoring this repo. Please use it to file bugs and feature enhancements. We'd love to hear from you! 45 | 46 | ## Contributing to the docs 47 | 48 | We welcome edits and contribution to our documentation. Just issue a pull request against our [docs repo](https://github.com/specstoryai/docs/). 49 | 50 | ## Star History 51 | 52 | [![Star History Chart](https://api.star-history.com/svg?repos=specstoryai/getspecstory&type=Date) 53 | --------------------------------------------------------------------------------