plugins/development/skills/professional-init-project/SKILL.md
Initializes open-source projects with GitHub best practices and git branching strategy. Triggers when setting up new repositories with standardized configuration, Gradle Kotlin DSL, or Python/uv support.
npx skillsauth add talent-factory/claude-plugins professional-init-projectInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill guides you through project initialization. Follow these instructions step by step.
/git-workflow:commit - NEVER use git commit directly!Analyze the user's arguments:
| Argument | Project Type | Build Tool |
|----------|-------------|------------|
| --java | Java | Gradle Kotlin DSL (NOT Maven!) |
| --uv | Python | uv |
| --git | Standard | - |
| --node | Node.js | npm/pnpm |
Optional arguments:
--name "xyz": Project name--no-branching: Only main, no develop# If --name is specified
mkdir -p <project-name>
cd <project-name>
# Initialize repository
git init
# Switch to develop branch (default)
git checkout -b develop
If --no-branching: Use git branch -M main instead
--java: Gradle Kotlin DSL ProjectIMPORTANT: ALWAYS use Gradle, NEVER Maven!
Create the following files:
build.gradle.kts:
plugins {
java
application
}
group = "com.example"
version = "0.1.0"
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenCentral()
}
dependencies {
testImplementation(platform("org.junit:junit-bom:5.11.4"))
testImplementation("org.junit.jupiter:junit-jupiter")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
application {
mainClass = "com.example.App"
}
tasks.test {
useJUnitPlatform()
testLogging {
events("passed", "skipped", "failed")
}
}
settings.gradle.kts:
rootProject.name = "<project-name>"
Directory structure:
<project-name>/
├── build.gradle.kts
├── settings.gradle.kts
├── gradle/wrapper/gradle-wrapper.properties
├── gradlew (executable)
├── gradlew.bat
├── src/main/java/com/example/App.java
├── src/main/resources/
├── src/test/java/com/example/AppTest.java
└── src/test/resources/
gradle/wrapper/gradle-wrapper.properties:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
.gitignore (Java/Gradle):
# Gradle
.gradle/
build/
!gradle/wrapper/gradle-wrapper.jar
# IDE
.idea/
*.iml
.vscode/
# OS
.DS_Store
--uv: Python ProjectUse uv init if available, otherwise create manually:
uv init <project-name> || mkdir -p src/<package_name> tests
Create these files in every project:
Create .github/ directory with:
IMPORTANT: ALWAYS use the /git-workflow:commit command!
Invoke the skill:
/git-workflow:commit
The commit skill will:
NEVER use git commit directly!
After the initial commit on develop:
# Create main branch from develop (synchronized)
git branch main
Display to the user:
Git repository initialized
Branch 'develop' created (active)
Project structure generated (<project-type>)
Community standards created
GitHub templates created
Initial commit created (via /git-workflow:commit)
Branch 'main' created (synchronized with develop)
Project ready: <project-name>/
Branch: develop (active)
Next steps:
- Java: ./gradlew build
- Python: uv venv && source .venv/bin/activate
| Rule | Description |
|------|-------------|
| Gradle, not Maven | Java projects ALWAYS use Gradle Kotlin DSL |
| Commit via skill | Initial commit ALWAYS via /git-workflow:commit |
| develop -> main | Default branching strategy |
| Java 21 | Current LTS version |
| JUnit 5 | Standard test framework |
documentation
Creates comprehensive handoff documentation before a /compact operation, enabling a new agent with fresh context to seamlessly continue the work. Activate when the user says "prepare a handoff", "document before compact", "context is getting too large", "I need to hand this off", "create a handoff document", "end of session notes", or "document the current state for tomorrow". Supports --output and --linear-issue options.
documentation
Collects completed tasks, GitHub activity, calendar meetings, wiki learnings, and Linear progress for the past week, then writes a structured retrospective to the Obsidian vault. Activate when the user runs "/weekly-review", asks "what did I accomplish this week", "weekly retrospective", "summarise my week", or "prepare weekly review". Works from any directory.
development
Produces a prioritised daily briefing by aggregating tasks from Obsidian TaskNotes, Google Calendar, Gmail, Linear, and GitHub, then writes the result to today's daily note in the Obsidian vault. Activate when the user runs "/today", asks "what's on my plate today", "give me my daily briefing", "what do I need to do today", or "morning briefing". Works from any directory without requiring Obsidian to be running.
tools
Provides a quick status snapshot of all GitHub repositories in a configured organisation — active, dormant, stalled — plus open pull requests and issues. Terminal output only, optimised for speed. Activate when the user runs "/project-pulse", asks "what is the status of my GitHub projects", "show me my repos", "which projects are active", "project overview", "GitHub pulse", or "what is happening in [org]". Works from any directory.