Merged
Conversation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add .DS_Store and .last-branch to gitignore - Include ralph scripts, prompt, CLAUDE.md, AGENTS.md, and archive - Add implementation plan and PRD docs - Update progress log and prd.json with completed stories - Register fetchers in DI (Program.cs) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Introduces the initial “Writegeist v1” implementation: a .NET 10 interactive CLI that ingests posts, analyses writing style via LLM providers (Anthropic/OpenAI), generates/refines drafts, and persists data in SQLite—plus supporting tests and Ralph agent automation artifacts.
Changes:
- Added Core domain models/interfaces plus services for style analysis and post generation/refinement.
- Added Infrastructure implementations: SQLite schema + repositories, LLM providers, and content fetchers (manual import + X API + stubs).
- Added CLI menus/actions wiring ingestion, analysis, generation, refinement, and profile viewing; added CI workflow and PRD/docs.
Reviewed changes
Copilot reviewed 69 out of 70 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
| Writegeist.slnx | Adds solution structure referencing src/tests projects |
| tests/Writegeist.Tests/Writegeist.Tests.csproj | Adds test project targeting net10.0 with xUnit/FA/NSubstitute |
| tests/Writegeist.Tests/Services/StyleAnalyserTests.cs | Unit tests for StyleAnalyser prompt/storage behavior |
| tests/Writegeist.Tests/Services/PostGeneratorTests.cs | Unit tests for generation/refinement prompts and draft storage |
| tests/Writegeist.Tests/PlatformConventionsTests.cs | Verifies platform rules for LinkedIn/X/Instagram/Facebook |
| tests/Writegeist.Tests/Persistence/SqliteStyleProfileRepositoryTests.cs | Repository tests for style profile persistence/retrieval |
| tests/Writegeist.Tests/Persistence/SqlitePostRepositoryTests.cs | Repository tests for raw post persistence + dedup hashing |
| tests/Writegeist.Tests/Persistence/SqlitePersonRepositoryTests.cs | Repository tests for persons CRUD and case-insensitive lookup |
| tests/Writegeist.Tests/Persistence/SqliteDraftRepositoryTests.cs | Repository tests for drafts + parent/child linking |
| tests/Writegeist.Tests/Persistence/SqliteDatabaseTests.cs | Verifies schema creation/idempotency/columns |
| tests/Writegeist.Tests/Fetchers/ManualFetcherTests.cs | Tests for manual file-based post ingestion |
| tasks/prd-writegeist.md | Adds a human-readable PRD for the project |
| src/Writegeist.Infrastructure/Writegeist.Infrastructure.csproj | Adds infra project with SQLite/AngleSharp/OpenAI deps |
| src/Writegeist.Infrastructure/Persistence/SqliteStyleProfileRepository.cs | Implements style profile persistence against SQLite |
| src/Writegeist.Infrastructure/Persistence/SqlitePostRepository.cs | Implements raw post storage + content-hash dedup |
| src/Writegeist.Infrastructure/Persistence/SqlitePersonRepository.cs | Implements person storage and case-insensitive lookup |
| src/Writegeist.Infrastructure/Persistence/SqliteDraftRepository.cs | Implements generated draft persistence and retrieval |
| src/Writegeist.Infrastructure/Persistence/SqliteDatabase.cs | Creates SQLite schema for persons/posts/profiles/drafts |
| src/Writegeist.Infrastructure/LlmProviders/OpenAiProvider.cs | Implements OpenAI-backed ILlmProvider |
| src/Writegeist.Infrastructure/LlmProviders/AnthropicProvider.cs | Implements Anthropic-backed ILlmProvider via raw HTTP |
| src/Writegeist.Infrastructure/Fetchers/XTwitterFetcher.cs | Implements X API v2 fetcher for recent tweets |
| src/Writegeist.Infrastructure/Fetchers/ManualFetcher.cs | Implements file import fetcher splitting posts by separator |
| src/Writegeist.Infrastructure/Fetchers/LinkedInFetcher.cs | Stub fetcher with manual-ingest guidance for LinkedIn |
| src/Writegeist.Infrastructure/Fetchers/InstagramFetcher.cs | Stub fetcher with manual-ingest guidance for Instagram |
| src/Writegeist.Infrastructure/Fetchers/FacebookFetcher.cs | Stub fetcher with manual-ingest guidance for Facebook |
| src/Writegeist.Core/Writegeist.Core.csproj | Adds Core project targeting net10.0 and InternalsVisibleTo tests |
| src/Writegeist.Core/Services/StyleAnalyser.cs | Implements analysis orchestration + prompt building |
| src/Writegeist.Core/Services/PostGenerator.cs | Implements generation/refinement orchestration + prompts |
| src/Writegeist.Core/PlatformConventions.cs | Defines platform-specific generation constraints/guidance |
| src/Writegeist.Core/Models/StyleProfile.cs | Adds StyleProfile model |
| src/Writegeist.Core/Models/RawPost.cs | Adds RawPost model |
| src/Writegeist.Core/Models/PlatformRules.cs | Adds PlatformRules record |
| src/Writegeist.Core/Models/Platform.cs | Adds Platform enum |
| src/Writegeist.Core/Models/Person.cs | Adds Person model |
| src/Writegeist.Core/Models/GeneratedDraft.cs | Adds GeneratedDraft model |
| src/Writegeist.Core/Models/FetchRequest.cs | Adds FetchRequest record |
| src/Writegeist.Core/Models/FetchedPost.cs | Adds FetchedPost record |
| src/Writegeist.Core/Interfaces/IStyleProfileRepository.cs | Adds style profile repository contract |
| src/Writegeist.Core/Interfaces/IPostRepository.cs | Adds post repository contract |
| src/Writegeist.Core/Interfaces/IPersonRepository.cs | Adds person repository contract |
| src/Writegeist.Core/Interfaces/ILlmProvider.cs | Adds LLM provider contract |
| src/Writegeist.Core/Interfaces/IDraftRepository.cs | Adds draft repository contract |
| src/Writegeist.Core/Interfaces/IContentFetcher.cs | Adds content fetcher contract |
| src/Writegeist.Cli/Writegeist.Cli.csproj | Adds CLI project and config copy-to-output |
| src/Writegeist.Cli/Program.cs | Bootstraps InteractiveCLI + DI wiring + DB creation |
| src/Writegeist.Cli/Menus/ProfileMenu.cs | Adds profiles submenu |
| src/Writegeist.Cli/Menus/MainMenu.cs | Adds main menu items for ingest/analyse/generate/refine/profiles |
| src/Writegeist.Cli/Menus/IngestMenu.cs | Adds ingestion submenu items |
| src/Writegeist.Cli/appsettings.json | Adds Writegeist config defaults (provider/db/models) |
| src/Writegeist.Cli/Actions/ShowProfileAction.cs | Shows latest profile as table/panel |
| src/Writegeist.Cli/Actions/RefineAction.cs | Implements draft refinement loop action |
| src/Writegeist.Cli/Actions/PlaceholderAction.cs | Placeholder action output |
| src/Writegeist.Cli/Actions/ListProfilesAction.cs | Lists persons with profiles |
| src/Writegeist.Cli/Actions/IngestInteractiveAction.cs | Interactive paste ingestion loop |
| src/Writegeist.Cli/Actions/IngestFromUrlAction.cs | URL/handle ingestion via fetcher dispatch |
| src/Writegeist.Cli/Actions/IngestFromFileAction.cs | File ingestion via ManualFetcher |
| src/Writegeist.Cli/Actions/GenerateAction.cs | Generates a post draft via PostGenerator |
| src/Writegeist.Cli/Actions/AnalyseAction.cs | Analyses style via StyleAnalyser |
| scripts/ralph/ralph.sh | Adds Ralph agent loop script (amp/claude) |
| scripts/ralph/prompt.md | Adds Amp prompt instructions |
| scripts/ralph/progress.txt | Adds iteration log/patterns |
| scripts/ralph/prd.json | Adds machine-readable PRD used by Ralph |
| scripts/ralph/CLAUDE.md | Adds Claude Code prompt instructions |
| scripts/ralph/archive/2026-04-04-colorado-pain-scale/progress.txt | Archives prior run progress log |
| scripts/ralph/archive/2026-04-04-colorado-pain-scale/prd.json | Archives prior run PRD snapshot |
| scripts/ralph/AGENTS.md | Adds agent usage documentation |
| prd.json | Adds/updates root PRD JSON copy |
| docs/writegeist-implementation-plan.md | Adds detailed implementation plan doc |
| .gitignore | Ignores macOS artifacts and Ralph branch tracking file |
| .github/workflows/build-and-test.yml | Adds CI workflow for restore/build/test |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 69 out of 70 changed files in this pull request and generated 5 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.