xiaohongshu
xiaohongshu
Generate comprehensive Pull Request descriptions by analyzing git changes, commit history, Linear issues, and code structure for both GitLab and GitHub
Full skill instructions
Use this skill when:
When NOT to use this skill:
High-quality PR descriptions are essential for:
This skill automates the process of gathering context from multiple sources (git history, Linear issues, code changes) and generating a structured, comprehensive description following best practices for Pull Requests.
When used, these keywords indicate the strength and requirement level of guidelines:
Strictness hierarchy: ALWAYS/NEVER > PREFER > CAN > NOTE/EXAMPLE
ALWAYS detect which platform is being used:
Check git remote URL:
git remote get-url origin
gitlab.com or consensusaps → GitLabgithub.com → GitHubALWAYS verify you have access to the appropriate tools:
mcp__gitlab__*)gh CLI tools via BashALWAYS confirm the current branch:
git branch --show-current
ALWAYS detect and identify the base/target branch dynamically:
BASE_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')
[ -z "$BASE_BRANCH" ] && BASE_BRANCH=$(git branch -r | grep -E 'origin/(main|master)$' | head -1 | sed 's@.*origin/@@')
echo "Base branch: $BASE_BRANCH"
main, master, or any custom default branchALWAYS gather comprehensive context from all available sources.
IMPORTANT: Use origin/$BASE_BRANCH for all comparisons to ensure you compare against the remote's state, not a potentially stale local branch.
IMPORTANT: Spec files and conversation history are for YOUR analysis only to understand implementation decisions. The final PR description should ONLY reference Linear issues as the source of original requirements, since reviewers have access to Linear but not to spec files or conversation history.
ALWAYS get the diff between current branch and base branch:
git diff origin/$BASE_BRANCH...HEAD
...) to compare from merge baseorigin/ prefix to compare against remote stateALWAYS get the list of changed files with stats:
git diff origin/$BASE_BRANCH...HEAD --stat
ALWAYS categorize changed files by area:
Connect/ng-app-monolith/Connect/Connect.Api/, Connect/Connect.Core/, etc.*.spec.ts, *.test.ts, or under tests/ directoriesConnect/Connect.Api/Migrations/*.md files*.json, *.config.*, *.yml filesCAN use GitLab/GitHub tools to get branch diffs if available:
mcp__gitlab__get_branch_diffsgh pr diff (if PR already exists)ALWAYS get commit history for the current branch:
git log origin/$BASE_BRANCH..HEAD --oneline
ALWAYS get detailed commit messages:
git log origin/$BASE_BRANCH..HEAD --format="%h %s%n%b%n"
ALWAYS analyze commits to understand:
ALWAYS check if branch name contains a Linear issue ID:
{initials}/{team-issue-id}-{description}mab/wan-521-ensure-that-platform-picker-page-is-only-shown-if-the-userwan-521 → WAN-521 (uppercase)jd/hea-123-fix-header-bug → Extract: HEA-123ab/mel-456-add-new-feature → Extract: MEL-456ALWAYS attempt to fetch Linear issue details if issue ID found:
mcp__linear__get_issue with issue ID
ALWAYS include in context:
ALWAYS compare implementation against Linear issue description:
CAN check commit messages for Linear issue references:
{TEAM}-{number} where TEAM is one of: WAN, HEA, MEL, POT, FIR, FEGWAN-123, Fixes HEA-456, Related to MEL-789ALWAYS analyze the scope of changes:
ng-app-monolith/Connect/ (excluding ng-app-monolith/).md files modifiedALWAYS identify change characteristics:
ALWAYS check for breaking changes indicators:
ALWAYS check for implementation decisions and context from the development process:
Specification Files (commonly created by structured-implementation-workflow Skill):
SPEC.md - Main specification documentLOG.md - Implementation log/journalOPEN_ISSUES.md - Known issues and decisionsIMPLEMENTATION.md - Implementation notes# Search for specification files
find . -maxdepth 3 -name "SPEC.md" -o -name "LOG.md" -o -name "OPEN_ISSUES.md" -o -name "IMPLEMENTATION.md"
Read specification files if found:
Review conversation history:
Capture important decisions and divergences:
ALWAYS pause after gathering context and before generating the description:
Present initial analysis:
Ask clarification questions:
Example clarification prompt:
I've analyzed the changes and identified this as a [type] that [brief summary].
Key decisions I found:
- [Decision 1]
- [Decision 2]
Divergences from Linear issue (if any):
- [Divergence 1 and why]
- [Divergence 2 and why]
Before generating the description:
- Is there anything specific you'd like me to emphasize or explain in detail?
- Are there any concerns, limitations, or trade-offs reviewers should be aware of?
- Should I highlight any particular aspects of the implementation?
- Should I explain any divergences from the original Linear issue in more detail?
Wait for user response before proceeding to Phase 3
ALWAYS generate a structured PR title and description.
Generate a PR title using Conventional Commits format: <type>(<scope>): <description>
NOTE: Check the project's CLAUDE.md for any project-specific conventional commit rules.
Types (based on Phase 2.4 analysis):
| feat | fix | refactor | docs | test | build/ci | chore | perf | style | revert |
Rules:
auth, platform-picker). Omit if changes span multiple areas.Examples: feat(auth): add OAuth2 support · fix: resolve null pointer in user lookup · refactor(api): extract validation utilities
ALWAYS include:
What changed (1-2 sentences, high-level, user/business-focused)
Why it changed (1-2 sentences, business context)
Link to Linear issue (if available):
Fixes, Closes, Resolves (marks issue as done when PR merges)Related to, Refs, References (links without auto-closing)Format options:
Fixes WAN-521
or
Closes https://linear.app/consensusaps/issue/WAN-521/title
or (for related but not closing):
Related to WAN-521
Fixes or Closes when the PR completes the work for the issueRelated to when the PR is partial work or tangentially relatedEXAMPLE Summary:
## Summary
Added a platform picker guard that automatically skips the platform selection page if a user only has access to one platform. This improves the user experience by reducing unnecessary navigation steps.
This change addresses user feedback that the platform picker was unnecessary for single-platform users, causing confusion and extra clicks.
Fixes WAN-521
ALWAYS include:
Implementation approach (2-4 sentences):
Scope changes (if implementation diverged from Linear issue):
Changes by area:
Frontend Changes (if applicable):
Backend Changes (if applicable):
Database Migrations (if applicable):
Test Coverage (if applicable):
Files changed summary:
**Key Files:**
- Frontend:
- `libs/connect/shared/platform-picker/data-access/src/lib/platform-picker-redirect.guard.ts` - New guard implementation
- `libs/connect/shared/platform-picker/data-access/src/lib/platform-picker-redirect.guard.spec.ts` - Guard tests
- Backend:
- `Connect/Connect.Api/Controllers/PlatformController.cs` - Added user platform count endpoint
EXAMPLE Technical Details:
## Technical Details
### Implementation Approach
Implemented a new Angular route guard (`PlatformPickerRedirectGuard`) that checks the user's platform count before allowing navigation to the platform picker page. If the user has only one platform, the guard automatically redirects to the appropriate destination.
The implementation uses NgRx ComponentStore for reactive state management and integrates with the existing platform service to fetch user platform data.
### Scope Changes
The Linear issue originally requested only redirecting single-platform users. During implementation, added a 2-second timeout with graceful fallback to prevent indefinite loading states when the platform API is slow or unresponsive. This was added after discovering edge cases during testing where network latency could leave users on a blank screen.
### Changes by Area
**Frontend:**
- Created `PlatformPickerRedirectGuard` implementing Angular `CanActivate` interface
- Added `PlatformPickerRedirectStore` for managing guard state
- Integrated guard into platform picker route configuration
- Added comprehensive unit tests for guard logic
**Backend:**
- Added `GET /api/platforms/count` endpoint to retrieve user platform count
- Updated `PlatformService` to support count queries
- Added caching for platform count to improve performance
**Tests:**
- 15 new unit tests for guard behavior
- 3 integration tests for the new API endpoint
- E2E tests for single-platform and multi-platform user flows
**Key Files:**
- Frontend:
- `libs/connect/shared/platform-picker/data-access/src/lib/platform-picker-redirect.guard.ts`
- `libs/connect/shared/platform-picker/data-access/src/lib/platform-picker-redirect.guard.spec.ts`
- `libs/connect/shared/platform-picker/data-access/src/lib/platform-picker-redirect.store.ts`
- Backend:
- `Connect/Connect.Api/Controllers/PlatformController.cs`
- `Connect/Connect.Core/Services/PlatformService.cs`
ALWAYS include actionable testing steps:
Setup steps (if needed):
Test scenarios (organized by priority):
Verification points:
PREFER using a checklist format for clarity:
EXAMPLE Test Plan:
## Test Plan
### Prerequisites
- User account with multiple platforms (for multi-platform testing)
- User account with single platform (for auto-redirect testing)
### Test Scenarios
**Scenario 1: Single-platform user**
- [ ] Log in as a user with only one platform
- [ ] Navigate to a route that would normally show platform picker
- [ ] Verify user is automatically redirected past the platform picker
- [ ] Verify the correct platform is pre-selected
**Scenario 2: Multi-platform user**
- [ ] Log in as a user with multiple platforms
- [ ] Navigate to platform picker route
- [ ] Verify platform picker page is displayed
- [ ] Verify all user's platforms are shown
**Scenario 3: Platform count API error**
- [ ] Simulate API error (network failure or 500 response)
- [ ] Verify user is still able to access platform picker
- [ ] Verify error is handled gracefully (no crash)
**Scenario 4: First-time user (no platforms)**
- [ ] Log in as a new user with no platforms
- [ ] Verify appropriate message/redirect to onboarding
ALWAYS include this section if any of the following are true:
If no breaking changes, use:
## Breaking Changes
None
If breaking changes exist, include:
What breaks:
Why it's breaking:
Migration path:
Impact assessment:
EXAMPLE Breaking Changes:
## Breaking Changes
### API Endpoint Signature Change
**What changed:**
The `GET /api/platforms` endpoint now requires a `userId` query parameter. Previously, it inferred the user from the authentication context.
**Why:**
This change enables admin users to query platforms for other users, which is required for the new admin dashboard feature.
**Migration:**
- **Frontend clients**: Update API calls to include `userId` parameter
```typescript
// Before
this.http.get("/api/platforms");
// After
this.http.get("/api/platforms", { params: { userId: currentUserId } });
```
userId to query string in API requestsImpact:
What changed:
New platform_access_count column added to users table with NOT NULL constraint.
Migration: Run migration before deploying new application version:
dotnet ef database update -c ConnectContext
Downtime: ~5 minutes (backfill operation for existing users)
#### 3.5 Screenshots and Videos Section
**ALWAYS** include a placeholder section for visual aids:
```markdown
## Screenshots / Videos
<!-- Add screenshots or videos here to help reviewers visualize the changes -->
<!-- Consider including: -->
<!-- - Before/after UI comparisons -->
<!-- - New features in action -->
<!-- - Error states or edge cases -->
<!-- - Mobile/responsive views -->
```
**NOTE**: This is a placeholder section for the PR creator to populate with relevant visuals
### Phase 4: Output Formatting
**ALWAYS** format the output as clean Markdown:
1. **ALWAYS** use proper heading hierarchy (##, ###)
2. **ALWAYS** use code blocks with language hints for code snippets
3. **ALWAYS** use bullet points and numbered lists for readability
4. **PREFER** using tables for structured data (if applicable)
5. **NEVER** include meta-commentary or placeholders like `[TODO]` or `[Fill this in]`
6. **NEVER** include AI attribution or badges such as:
- `🤖 Generated with [Claude Code](https://claude.ai/code)`
- `Generated with Claude Code`
- `Co-Authored-By: Claude` or similar
- Any mention of AI assistance in the description
**ALWAYS** present the final PR title and description in a clear, copy-paste-ready format:
```markdown
Here is your generated PR:
**Title:** `<type>(<scope>): <description>`
---
[DESCRIPTION CONTENT HERE]
---
```
**NOTE**: The title is formatted with backticks for easy copying. The description follows the standard markdown format.
6. **ALWAYS** ask if the description should be saved to a markdown file:
- After presenting the description, ask: "Would you like me to save this description to a markdown file?"
- If yes, save to a file named `PR_DESCRIPTION.md` in the repository root
- Confirm the file location after saving
### Phase 5: Final Checklist
**ALWAYS** verify before presenting the PR:
- [ ] **Title** follows conventional commit format (`<type>(<scope>): <description>`)
- [ ] **Title** uses correct type (feat, fix, refactor, docs, test, chore, etc.)
- [ ] **Title** is concise (under 72 characters total)
- [ ] **Title** uses imperative mood ("add", not "added")
- [ ] Summary clearly explains what and why (objective tone, no excessive praise)
- [ ] Linear issue is linked with appropriate magic word (Fixes/Closes vs. Related to)
- [ ] Technical details cover implementation approach and key decisions from conversation/spec files
- [ ] **Divergences from Linear issue are documented with clear rationale** (if applicable)
- [ ] Changes are categorized by area (Frontend/Backend/Tests)
- [ ] Key files are listed (not line counts)
- [ ] Test plan includes actionable scenarios
- [ ] Breaking changes are documented (or marked as "None")
- [ ] Screenshots/Videos placeholder section is included
- [ ] Markdown is properly formatted
- [ ] No placeholders or TODOs in the output (except Screenshots section)
- [ ] Description is ready to copy-paste
- [ ] No listing of the amount of lines changed
- [ ] No AI attribution or "Generated with Claude Code" badges included
- [ ] Asked user if they want to save to markdown file
## Best Practices
### Context Gathering
- **ALWAYS** detect the base branch dynamically using `git symbolic-ref refs/remotes/origin/HEAD`
- **ALWAYS** use `git diff origin/$BASE_BRANCH...HEAD` (three dots, `origin/` prefix) to compare from merge base against the remote's state
- **NEVER** use local branch names like `main` or `master` directly - always use `origin/` prefix to avoid comparing against stale local branches
- **ALWAYS** look at both commit messages and code changes - they tell different stories
- **NEVER** skip Linear issue lookup if the branch name contains an issue ID
- **PREFER** using MCP tools (GitLab/Linear) over bash commands when available for richer data
### Writing Style
- **ALWAYS** write in present tense ("Adds feature" not "Added feature")
- **ALWAYS** be specific and concrete ("Added Redis caching for user queries" not "Improved performance")
- **NEVER** use vague terms like "various changes" or "miscellaneous updates"
- **PREFER** active voice over passive voice ("The guard redirects users" not "Users are redirected by the guard")
- **ALWAYS** maintain a professional, objective tone - let the changes speak for themselves
- **NEVER** use excessive praise or superlatives ("amazing", "excellent", "great improvement")
- **NEVER** argue for why changes are good - describe what was done and why, without advocacy
- **PREFER** factual descriptions over persuasive language
- **NEVER** write sentences like "This brilliant solution elegantly solves the performance problem"
- **ALWAYS** write sentences like "Reduces query time by caching frequently accessed data"
- **NEVER** make up statistics or performance claims without evidence
### Technical Details
- **ALWAYS** explain **why** decisions were made, not just **what** changed
- **PREFER** including relevant code snippets for complex changes
- **NEVER** list every single file - focus on the most significant ones
- **NEVER** list the amount of lines changed - it's not useful information, clutters the description and is often quickly made incorrect by subsequent commits
- **CAN** reference existing patterns in AGENTS.md when explaining implementation choices
### Test Plans
- **ALWAYS** make test scenarios actionable (steps anyone can follow)
- **PREFER** checklist format for test scenarios
- **NEVER** write "test thoroughly" without specific scenarios
- **ALWAYS** include edge cases and error scenarios, not just happy paths
## Anti-Patterns
### Title Anti-Patterns
| ❌ Wrong | ✅ Correct | Issue |
|----------|-----------|-------|
| `Update platform picker` | `feat(platform-picker): add redirect` | Missing type |
| `feat(auth): fixed login bug` | `feat(auth): fix login bug` | Past tense |
| `fix: bug fix` | `fix(checkout): resolve race condition` | Vague |
| `feat(user-auth-service): add comprehensive OAuth2...` | `feat(auth): add OAuth2 support` | Too long |
---
### ❌ WRONG: Vague Summary
```markdown
## Summary
Updated the platform picker functionality to work better.
```
### ✅ CORRECT: Specific Summary
```markdown
## Summary
Added automatic redirect logic that skips the platform picker page when a user has access to only one platform, reducing unnecessary navigation steps.
Fixes WAN-521
```
---
### ❌ WRONG: List of Files Without Context
```markdown
## Changes
- file1.ts
- file2.cs
- file3.spec.ts
- file4.html
- file5.scss
```
### ✅ CORRECT: Categorized Changes with Purpose
```markdown
## Technical Details
**Frontend:**
- `platform-picker-redirect.guard.ts` - New guard that checks platform count and redirects single-platform users
- `platform-picker-redirect.store.ts` - ComponentStore for managing guard state
- `platform-picker-redirect.guard.spec.ts` - Comprehensive unit tests
**Backend:**
- `PlatformController.cs` - Added `/api/platforms/count` endpoint
```
---
### ❌ WRONG: No Test Plan
```markdown
## Test Plan
Test all the changes manually.
```
### ✅ CORRECT: Actionable Test Scenarios
```markdown
## Test Plan
**Scenario 1: Single-platform user**
- [ ] Log in as a user with only one platform
- [ ] Navigate to `/platform-picker`
- [ ] Verify automatic redirect to dashboard
- [ ] Verify correct platform is pre-selected
**Scenario 2: Multi-platform user**
- [ ] Log in as a user with 2+ platforms
- [ ] Navigate to `/platform-picker`
- [ ] Verify platform picker page displays
- [ ] Verify all platforms are listed
```
---
### ❌ WRONG: Overly Enthusiastic Tone
```markdown
## Summary
This amazing implementation brilliantly solves the platform picker problem! We've created
an excellent solution that elegantly handles all edge cases. This is a huge improvement
that will dramatically enhance user experience!
## Technical Details
The implementation is beautifully architected using cutting-edge patterns. The guard is
incredibly efficient and handles everything perfectly. This is truly exceptional work!
```
### ✅ CORRECT: Professional, Objective Tone
```markdown
## Summary
Added automatic redirect logic to skip the platform picker page when users have access
to exactly one platform, eliminating an unnecessary navigation step.
Fixes WAN-521
## Technical Details
### Implementation Approach
Implemented a route guard that checks platform count before navigation. When a user has
exactly one platform, the guard redirects directly to that platform instead of showing
the picker page.
```
---
### ❌ WRONG: Hidden Breaking Changes
```markdown
## Technical Details
Changed the API endpoint signature.
```
### ✅ CORRECT: Explicit Breaking Changes Section
````markdown
## Breaking Changes
### API Endpoint Signature Change
**What changed:**
`GET /api/platforms` now requires `userId` query parameter.
**Migration:**
Update all API calls:
```typescript
// Before
this.http.get("/api/platforms");
// After
this.http.get("/api/platforms", { params: { userId } });
```
Impact:
---
### ❌ WRONG: AI Attribution in Description
```markdown
## Summary
Added the new feature to improve user experience.
🤖 Generated with [Claude Code](https://claude.ai/code)
```
### ✅ CORRECT: Clean Description Without Attribution
```markdown
## Summary
Added the new feature to improve user experience.
```
## Examples
### Example 1: Frontend-Only Feature
**Input:**
- Branch: `mab/wan-521-auto-skip-platform-picker`
- Changed files: 3 frontend files (guard, store, tests)
- Commits: 4 commits with incremental implementation
- Linear issue: WAN-521 (feature request)
**Generated PR:**
```markdown
Here is your generated PR:
**Title:** `feat(platform-picker): add automatic redirect for single-platform users`
---
## Summary
Added automatic redirect logic that skips the platform picker page when users have access to only one platform. This eliminates an unnecessary navigation step and improves user experience for single-platform users.
This addresses user feedback that the platform picker was confusing for users who only had one platform available.
Fixes WAN-521
## Technical Details
### Implementation Approach
Created a new Angular route guard (`PlatformPickerRedirectGuard`) that queries the user's platform count and conditionally redirects based on the result. The guard integrates with the existing platform service and uses NgRx ComponentStore for reactive state management.
### Changes by Area
**Frontend:**
- Implemented `PlatformPickerRedirectGuard` using Angular `CanActivate` interface
- Created `PlatformPickerRedirectStore` for managing platform count state
- Integrated guard into platform picker route configuration
- Added 12 unit tests covering all guard scenarios
**Key Files:**
- `libs/connect/shared/platform-picker/data-access/src/lib/platform-picker-redirect.guard.ts` - Guard implementation
- `libs/connect/shared/platform-picker/data-access/src/lib/platform-picker-redirect.store.ts` - State management
- `libs/connect/shared/platform-picker/data-access/src/lib/platform-picker-redirect.guard.spec.ts` - Tests
## Test Plan
**Scenario 1: Single-platform user**
- [ ] Log in with user account that has only one platform
- [ ] Navigate to any route that would trigger platform picker
- [ ] Verify automatic redirect past platform picker
- [ ] Verify correct platform is pre-selected in destination
**Scenario 2: Multi-platform user**
- [ ] Log in with user account that has multiple platforms
- [ ] Navigate to platform picker route
- [ ] Verify platform picker page displays normally
- [ ] Verify all platforms are shown in the picker
**Scenario 3: Error handling**
- [ ] Simulate platform service error (disconnect network)
- [ ] Verify graceful fallback (show picker anyway)
- [ ] Verify no crashes or console errors
## Breaking Changes
None
## Screenshots / Videos
<!-- Add screenshots or videos here to help reviewers visualize the changes -->
<!-- Consider including: -->
<!-- - Before/after UI comparisons -->
<!-- - New features in action -->
<!-- - Error states or edge cases -->
<!-- - Mobile/responsive views -->
Input:
feature/add-user-preferences-apiuser_preferences tableGenerated PR:
Here is your generated PR:
**Title:** `feat(preferences): add user preferences storage and API`
---
## Summary
Added user preferences storage and API endpoints to enable users to save and retrieve their application settings (theme, notification preferences, default views). This provides a foundation for future personalization features.
Related to CON-789
## Technical Details
### Implementation Approach
Implemented a new `user_preferences` table to store JSON preference data, with API endpoints for CRUD operations. The frontend uses a new preferences service that caches user preferences and syncs changes to the backend.
Database migration adds the preferences table with appropriate indexing and foreign key constraints.
### Changes by Area
**Backend:**
- `PreferencesController.cs` - New REST endpoints for preferences CRUD
- `UserPreferencesService.cs` - Business logic for preference management
- `UserPreference.cs` - Entity model
- `20250122_AddUserPreferences.cs` - Database migration
**Frontend:**
- `user-preferences.service.ts` - Service for managing user preferences with local caching
- `preferences.component.ts` - UI for editing preferences
- API client updates for new endpoints
**Database Migration:**
- Added `user_preferences` table with columns: `id`, `user_id`, `preferences_json`, `created_at`, `updated_at`
- Added index on `user_id` for query performance
- Foreign key constraint to `users` table
**Tests:**
- 8 unit tests for backend service
- 6 integration tests for API endpoints
- 10 frontend component tests
**Key Files:**
- Backend:
- `Connect/Connect.Api/Controllers/PreferencesController.cs`
- `Connect/Connect.Core/Services/UserPreferencesService.cs`
- `Connect/Connect.Api/Migrations/20250122_AddUserPreferences.cs`
- Frontend:
- `libs/connect/shared/preferences/data-access/src/lib/user-preferences.service.ts`
- `libs/connect/shared/preferences/feature/src/lib/preferences.component.ts`
## Test Plan
### Prerequisites
- Database migration applied
- User account for testing
### Test Scenarios
**Scenario 1: Create preferences (first time)**
- [ ] Log in as user with no preferences
- [ ] Navigate to preferences page
- [ ] Change theme to "dark"
- [ ] Enable email notifications
- [ ] Click "Save"
- [ ] Verify success message
- [ ] Reload page and verify preferences persisted
**Scenario 2: Update existing preferences**
- [ ] Log in as user with existing preferences
- [ ] Change notification settings
- [ ] Click "Save"
- [ ] Verify preferences updated in database
- [ ] Verify UI reflects changes immediately
**Scenario 3: API validation**
- [ ] Send invalid JSON to preferences API
- [ ] Verify 400 Bad Request response
- [ ] Verify helpful error message
**Scenario 4: Cross-user isolation**
- [ ] Create preferences for User A
- [ ] Log in as User B
- [ ] Verify User B cannot see User A's preferences
- [ ] Verify User B can create own preferences
## Breaking Changes
### Database Migration Required
**What changed:**
New `user_preferences` table added to database schema.
**Migration:**
Run the following migration before deploying:
```bash
dotnet ef database update -c ConnectContext
```
Downtime: ~1 minute (table creation, no data backfill needed)
Rollback: If rollback is needed:
dotnet ef migrations remove -c ConnectContext
## Reference Files
**ALWAYS** refer to these files for context:
- `AGENTS.md` - Authoritative development guidelines for this codebase
- `CLAUDE.md` - AI-specific instructions, including GitLab vs GitHub guidance
- Existing PR descriptions in the repository for style reference
## Platform-Specific Notes
### GitLab
- **PREFER** using GitLab MCP server tools when available:
- `mcp__gitlab__get_branch_diffs` for diff analysis
- `mcp__gitlab__list_commits` for commit history
- `mcp__gitlab__get_merge_request` if PR already exists
- **ALWAYS** link Linear issues using magic words for automatic linking:
- **Magic words that auto-close**: `Fixes`, `Closes`, `Resolves` (use when PR completes the issue)
- **Magic words that link only**: `Related to`, `Refs`, `References` (use for partial/related work)
- **Format**: `{magic word} {TEAM}-{number}` or `{magic word} {full Linear URL}`
- **EXAMPLE**: `Fixes WAN-123`, `Closes HEA-456`, `Related to MEL-789`
- **NOTE**: Team abbreviations: WAN, HEA, MEL, POT, FIR, FEG
### GitHub
- **PREFER** using `gh` CLI via Bash for GitHub operations
- **ALWAYS** link issues using: `Fixes #123` or `Closes #123` or `Related to #123`
## Notes
- **NOTE**: This skill generates the description text only - it does NOT create the PR
- **NOTE**: After generation, review the description and adjust as needed before using it
- **NOTE**: The skill follows Connect project conventions (AGENTS.md) but may need customization for other projects
- **NOTE**: If Linear issue lookup fails, continue anyway and note the issue ID in the summary without detailed context
- **NOTE**: Spec files (SPEC.md, LOG.md, OPEN_ISSUES.md, etc.) and conversation history are for context gathering ONLY
- Use them to understand what happened during implementation
- **NEVER** reference them in the PR description - reviewers don't have access to them
- Only reference Linear issues when documenting divergences or original requirements
- **WRONG**: "As mentioned in LOG.md..." or "Based on our earlier discussion..."
- **RIGHT**: "Linear issue WAN-123 requested X, but implemented Y because..."
xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience