@vfarcic/dot-ai
Version:
AI-powered development productivity platform that enhances software development workflows through intelligent automation and AI-driven assistance
672 lines (671 loc) • 22.9 kB
JSON
{
"readme": {
"files": ["README.md"],
"questions": [
{
"id": "projectName",
"question": "What is the project name?",
"required": true
},
{
"id": "projectDescription",
"question": "What does this project do?",
"required": true
},
{
"id": "licenseName",
"question": "What license does this project use? (e.g., MIT, Apache-2.0, GPL-3.0)",
"required": false
}
]
},
"legal": {
"files": ["LICENSE"],
"questions": [
{
"id": "licenseType",
"question": "What license type would you like? (MIT, Apache-2.0, GPL-3.0, BSD-3-Clause)",
"required": true,
"options": ["MIT", "Apache-2.0", "GPL-3.0", "BSD-3-Clause"]
},
{
"id": "year",
"question": "What year for the copyright? (e.g., 2025)",
"required": true
},
{
"id": "copyrightHolder",
"question": "Who is the copyright holder? (e.g., Your Name or Your Organization)",
"required": true
},
{
"id": "projectName",
"question": "What is the project name?",
"required": true
},
{
"id": "projectDescription",
"question": "What does this project do? (Required for GPL-3.0, optional otherwise)",
"required": false
},
{
"id": "projectUrl",
"question": "Project URL (optional, used in NOTICE file for Apache-2.0)",
"required": false
}
],
"conditionalFiles": {
"NOTICE": {
"condition": "licenseType === 'Apache-2.0'",
"reason": "NOTICE file is required for Apache 2.0 licensed projects"
}
}
},
"governance": {
"files": ["CODE_OF_CONDUCT.md", "CONTRIBUTING.md", "SECURITY.md", "docs/MAINTAINERS.md", "docs/GOVERNANCE.md", "docs/ROADMAP.md"],
"questions": [
{
"id": "projectName",
"question": "What is the project name?",
"required": true
},
{
"id": "repositoryUrl",
"question": "What is the repository URL? (e.g., https://github.com/username/repo)",
"required": true
},
{
"id": "repoName",
"question": "Repository name (without owner, used in git clone commands - e.g., 'dot-ai' from 'github.com/vfarcic/dot-ai')",
"required": true
},
{
"id": "enforcementEmail",
"question": "Email address for Code of Conduct enforcement",
"required": true
},
{
"id": "securityEmail",
"question": "Email address for security vulnerability reports",
"required": true
},
{
"id": "maintainerEmail",
"question": "General maintainer contact email",
"required": true
},
{
"id": "maintainerName",
"question": "Lead maintainer name",
"required": true
},
{
"id": "maintainerGithub",
"question": "Lead maintainer GitHub username (without @)",
"required": true
},
{
"id": "setupCommand",
"question": "Command to install dependencies (e.g., 'npm install', 'pip install -r requirements.txt')",
"required": false
},
{
"id": "testCommand",
"question": "Command to run tests (e.g., 'npm test', 'pytest')",
"required": false
},
{
"id": "lintCommand",
"question": "Command to run linters (e.g., 'npm run lint', 'ruff check')",
"required": false
},
{
"id": "requiresDco",
"question": "Does this project require Developer Certificate of Origin (DCO) sign-off? (yes/no)",
"required": false
},
{
"id": "discussionsUrl",
"question": "GitHub Discussions URL (optional)",
"required": false
},
{
"id": "slackChannel",
"question": "Slack community channel URL (optional)",
"required": false
},
{
"id": "discordUrl",
"question": "Discord server URL (optional)",
"required": false
},
{
"id": "supportedVersions",
"question": "Supported versions table for SECURITY.md (optional, markdown format)",
"required": false
},
{
"id": "maintainerPeriod",
"question": "How long should someone contribute before becoming a maintainer? (e.g., '6 months', '1 year')",
"required": false
},
{
"id": "inactivityPeriod",
"question": "How long before inactive maintainers are removed? (e.g., '6 months', '1 year')",
"required": false
},
{
"id": "hasVoting",
"question": "Does this project use voting for decisions? (yes/no)",
"required": false
},
{
"id": "votingThreshold",
"question": "If voting is used, what's the threshold? (e.g., 'majority', '2/3 majority', 'consensus')",
"required": false
},
{
"id": "githubProjectUrl",
"question": "GitHub Project Board URL for roadmap tracking (optional)",
"required": false
},
{
"id": "shortTermGoals",
"question": "Short-term goals (1-3 months) in markdown format (optional)",
"required": false
},
{
"id": "mediumTermGoals",
"question": "Medium-term goals (3-6 months) in markdown format (optional)",
"required": false
},
{
"id": "longTermGoals",
"question": "Long-term goals (6-12 months) in markdown format (optional)",
"required": false
},
{
"id": "roadmapIntro",
"question": "Custom introduction for ROADMAP.md (optional)",
"required": false
},
{
"id": "requiresConsensus",
"question": "Do major decisions require consensus among maintainers? (yes/no)",
"required": false
},
{
"id": "hasCommitters",
"question": "Does this project have a separate 'Committers' role? (yes/no)",
"required": false
},
{
"id": "hasSteeringCommittee",
"question": "Does this project have a Steering Committee? (yes/no)",
"required": false
}
]
},
"community": {
"files": ["SUPPORT.md", "ADOPTERS.md"],
"questions": [
{
"id": "projectName",
"question": "What is the project name?",
"required": true
},
{
"id": "projectDescription",
"question": "What does this project do? (brief description)",
"required": false
},
{
"id": "projectUrl",
"question": "What is the project URL? (e.g., https://github.com/username/repo)",
"required": true
},
{
"id": "docsUrl",
"question": "What is the documentation URL? (e.g., https://docs.example.com or README)",
"required": true
},
{
"id": "discussionsUrl",
"question": "What is the GitHub Discussions URL? (e.g., https://github.com/username/repo/discussions)",
"required": true
},
{
"id": "stackOverflowTag",
"question": "Stack Overflow tag for your project (optional, e.g., 'my-project')",
"required": false
},
{
"id": "slackUrl",
"question": "Slack workspace URL (optional)",
"required": false
},
{
"id": "discordUrl",
"question": "Discord server URL (optional)",
"required": false
},
{
"id": "forumUrl",
"question": "Community forum URL (optional)",
"required": false
},
{
"id": "maintainerCount",
"question": "How many maintainers does this project have? (number)",
"required": false
},
{
"id": "criticalResponseTime",
"question": "Typical response time for critical bugs (e.g., '24 hours', '48 hours', 'best effort')",
"required": false
},
{
"id": "featureResponseTime",
"question": "Typical response time for feature requests (e.g., '1 week', '2 weeks', 'best effort')",
"required": false
},
{
"id": "questionResponseTime",
"question": "Typical response time for questions (e.g., '48 hours', '1 week', 'best effort')",
"required": false
},
{
"id": "commercialSupportAvailable",
"question": "Is commercial support available? (yes/no)",
"required": false
},
{
"id": "commercialSupportProvider",
"question": "Who provides commercial support? (if available)",
"required": false
},
{
"id": "commercialSupportEmail",
"question": "Email for commercial support inquiries (if available)",
"required": false
},
{
"id": "securityEmail",
"question": "Email address for security vulnerability reports",
"required": true
},
{
"id": "includeUseCase",
"question": "Should ADOPTERS.md include a use case column? (yes/no)",
"required": false
},
{
"id": "maintainerOrganization",
"question": "Add your organization as the first adopter? (organization name, optional)",
"required": false
},
{
"id": "maintainerUseCase",
"question": "Your organization's use case (if adding as first adopter)",
"required": false
},
{
"id": "maintainerWebsite",
"question": "Your organization's website (if adding as first adopter)",
"required": false
},
{
"id": "requiresDco",
"question": "Do PRs require DCO sign-off? (yes/no)",
"required": false
},
{
"id": "requiresVerification",
"question": "Do you verify organizations before adding to ADOPTERS? (yes/no)",
"required": false
},
{
"id": "recognitionProgram",
"question": "Do you have an adopter recognition program? (yes/no)",
"required": false
},
{
"id": "maintainerEmail",
"question": "General maintainer contact email",
"required": true
},
{
"id": "questionsContact",
"question": "Contact email for questions about the adopters list (optional, defaults to maintainer email)",
"required": false
}
]
},
"github-issues": {
"files": [".github/ISSUE_TEMPLATE/bug_report.yml", ".github/ISSUE_TEMPLATE/feature_request.yml", ".github/ISSUE_TEMPLATE/config.yml"],
"questions": [
{
"id": "projectName",
"question": "What is the project name?",
"required": true
},
{
"id": "githubOrg",
"question": "GitHub organization or username (e.g., 'octocat' from github.com/octocat/repo)",
"required": true
},
{
"id": "githubRepo",
"question": "GitHub repository name (e.g., 'repo' from github.com/octocat/repo)",
"required": true
},
{
"id": "isNodeProject",
"question": "Is this a Node.js/TypeScript project? (yes/no)",
"required": false
},
{
"id": "isPythonProject",
"question": "Is this a Python project? (yes/no)",
"required": false
},
{
"id": "isGoProject",
"question": "Is this a Go project? (yes/no)",
"required": false
},
{
"id": "isKubernetesProject",
"question": "Is this a Kubernetes-related project? (yes/no)",
"required": false
},
{
"id": "hasDiscussions",
"question": "Do you have GitHub Discussions enabled? (yes/no)",
"required": false
},
{
"id": "blankIssuesEnabled",
"question": "Allow blank issues (no template)? Recommended: no (yes/no)",
"required": false
},
{
"id": "docsSiteUrl",
"question": "Documentation site URL (optional, leave blank if none)",
"required": false
},
{
"id": "slackInviteUrl",
"question": "Slack workspace invite URL (optional, leave blank if none)",
"required": false
},
{
"id": "discordInviteUrl",
"question": "Discord server invite URL (optional, leave blank if none)",
"required": false
},
{
"id": "supportFilePath",
"question": "Path to SUPPORT.md file (if exists, e.g., 'SUPPORT.md' or 'docs/SUPPORT.md', leave blank if none)",
"required": false
},
{
"id": "securityFilePath",
"question": "Path to SECURITY.md file (if exists, e.g., 'SECURITY.md' or leave blank if none)",
"required": false
},
{
"id": "roadmapPath",
"question": "Path to ROADMAP.md file (if exists, e.g., 'docs/ROADMAP.md' or leave blank if none)",
"required": false
}
]
},
"pr-template": {
"files": [".github/PULL_REQUEST_TEMPLATE.md"],
"questions": [
{
"id": "projectName",
"question": "What is the project name?",
"required": true
},
{
"id": "requiresDco",
"question": "Require DCO (Developer Certificate of Origin) sign-off on all commits? (yes/no)",
"required": false
},
{
"id": "requiresConventionalCommits",
"question": "Enforce Conventional Commits format for PR titles? (yes/no)",
"required": false
},
{
"id": "includesSecurityChecklist",
"question": "Include security checklist in PR template? (yes/no)",
"required": false
},
{
"id": "requiresScreenshots",
"question": "Require screenshots for UI changes? (yes/no)",
"required": false
},
{
"id": "contributingPath",
"question": "Path to CONTRIBUTING.md file (if exists, e.g., 'CONTRIBUTING.md' or 'docs/CONTRIBUTING.md', leave blank if none)",
"required": false
}
]
},
"github-community": {
"files": [".github/CODEOWNERS", ".github/release.yml"],
"questions": [
{
"id": "useTeams",
"question": "Use GitHub teams for code ownership? (yes/no) - If yes, requires organization; if no, uses individual maintainer usernames",
"required": false
},
{
"id": "githubOrg",
"question": "GitHub organization name (required if using teams, e.g., 'kubernetes', 'apache')",
"required": false
},
{
"id": "defaultTeam",
"question": "Default team name for code ownership (required if using teams, e.g., 'maintainers', 'core-team')",
"required": false
},
{
"id": "maintainerUsernames",
"question": "Maintainer GitHub usernames (comma-separated, without @, required if not using teams, e.g., 'octocat,torvalds')",
"required": false
},
{
"id": "enableFunding",
"question": "Enable GitHub sponsor button with funding links? (yes/no)",
"required": false
},
{
"id": "githubSponsors",
"question": "GitHub Sponsors username (optional, leave blank if not using GitHub Sponsors)",
"required": false
},
{
"id": "openCollective",
"question": "Open Collective project slug (optional, e.g., 'webpack', 'babel')",
"required": false
},
{
"id": "patreon",
"question": "Patreon username (optional, leave blank if not using Patreon)",
"required": false
},
{
"id": "kofi",
"question": "Ko-fi username (optional, leave blank if not using Ko-fi)",
"required": false
},
{
"id": "tidelift",
"question": "Tidelift package name (optional, format: npm/package-name or pypi/package-name)",
"required": false
},
{
"id": "customFunding",
"question": "Custom funding URL (optional, leave blank if not using custom funding link)",
"required": false
}
],
"conditionalFiles": {
".github/FUNDING.yml": {
"condition": "enableFunding === 'yes' || enableFunding === 'true' || enableFunding === true",
"reason": "FUNDING.yml is only generated when funding/sponsorship is enabled"
}
}
},
"github-security": {
"files": [".github/workflows/scorecard.yml"],
"questions": [
{
"id": "githubOrg",
"question": "GitHub organization or username (e.g., 'kubernetes', 'octocat')",
"required": true
},
{
"id": "githubRepo",
"question": "GitHub repository name (e.g., 'kubernetes', 'hello-world')",
"required": true
},
{
"id": "defaultBranch",
"question": "What is your default branch name? (e.g., main, master)",
"required": true
},
{
"id": "scheduleCron",
"question": "Cron expression for when to run security analysis (standard 5-field cron syntax). Examples: '30 1 * * 6' (weekly on Saturdays at 1:30 AM UTC), '30 1 * * *' (daily at 1:30 AM UTC), '30 1 1 * *' (monthly on 1st at 1:30 AM UTC). Recommended: weekly",
"required": true
},
{
"id": "scheduleDescription",
"question": "Human-readable description of the schedule (e.g., 'Weekly on Saturdays at 1:30 AM UTC', 'Daily at 1:30 AM UTC')",
"required": true
},
{
"id": "publishResults",
"question": "Publish results to enable Scorecard badge and REST API access? (true/false - recommended: true for public repos)",
"required": true
},
{
"id": "isPrivateRepo",
"question": "Is this a private repository? (yes/no) - Private repos need additional permissions to detect SAST tools and query commits",
"required": true
}
],
"additionalInstructions": "If you enabled publish_results: true, you can add an OpenSSF Scorecard badge to your README.md to display your security score:\n\n[](https://scorecard.dev/viewer/?uri=github.com/{{githubOrg}}/{{githubRepo}})\n\nThe badge will display your repository's security score and link to detailed results at https://scorecard.dev/viewer/?uri=github.com/{{githubOrg}}/{{githubRepo}}"
},
"github-automation": {
"files": ["renovate.json", ".github/labeler.yml", ".github/workflows/labeler.yml", ".github/workflows/stale.yml"],
"questions": [
{
"id": "prConcurrentLimit",
"question": "Maximum number of concurrent pull requests for Renovate (recommended: 3-10, leave empty for default: 10)",
"required": false
},
{
"id": "prHourlyLimit",
"question": "Maximum PRs per hour for Renovate (0 for unlimited, recommended: 2-5, leave empty for default: 0)",
"required": false
},
{
"id": "enableDependencyDashboard",
"question": "Enable Renovate dependency dashboard issue? (true/false - shows all pending updates in one place, leave empty for default: true)",
"required": false
},
{
"id": "enableVulnerabilityAlerts",
"question": "Enable Renovate OSV vulnerability alerts? (true/false - checks dependencies for known vulnerabilities, leave empty for default: true)",
"required": false
},
{
"id": "schedule",
"question": "Schedule for Renovate dependency checks (text format like 'before 5am on monday', 'after 10pm every weekday', 'every weekend', leave empty for default: 'before 5am on monday')",
"required": false
},
{
"id": "groupDependencies",
"question": "Group non-major dependencies into single PRs in Renovate? (true/false - reduces PR volume, leave empty for default: true)",
"required": false
},
{
"id": "automergeMinor",
"question": "Auto-merge minor and patch updates in Renovate? (true/false - automatically merges non-breaking updates, leave empty for default: false)",
"required": false
},
{
"id": "automergeSecurity",
"question": "Auto-merge security updates in Renovate? (true/false - automatically merges security patches, leave empty for default: false)",
"required": false
},
{
"id": "sourceDirectory",
"question": "Source code directory for labeler (optional, e.g., 'src', 'lib'). Leave empty if no specific source directory",
"required": false
},
{
"id": "testDirectory",
"question": "Test directory for labeler (optional, e.g., 'tests', 'test', '__tests__'). Leave empty if tests follow common patterns",
"required": false
},
{
"id": "infrastructureDirectory",
"question": "Infrastructure directory for labeler (optional, e.g., 'infrastructure', 'deploy'). Leave empty if using common patterns (terraform/, k8s/, etc.)",
"required": false
},
{
"id": "staleBotSchedule",
"question": "Cron schedule for stale bot (e.g., '0 0 * * *' for daily at midnight, leave empty for default: '0 0 * * *')",
"required": false
},
{
"id": "daysBeforeIssueStale",
"question": "Days before marking issue as stale (recommended: 60-90, leave empty for default: 60)",
"required": false
},
{
"id": "daysBeforeIssueClose",
"question": "Days before closing stale issue (recommended: 7-14, leave empty for default: 7)",
"required": false
},
{
"id": "daysBeforePrStale",
"question": "Days before marking PR as stale (recommended: 30-60, leave empty for default: 30)",
"required": false
},
{
"id": "daysBeforePrClose",
"question": "Days before closing stale PR (recommended: 7-14, leave empty for default: 7)",
"required": false
},
{
"id": "exemptIssueLabels",
"question": "Issue labels that exempt from stale bot (comma-separated, e.g., 'pinned,security,bug,needs-maintainer-response', leave empty for default: 'pinned,security')",
"required": false
},
{
"id": "exemptPrLabels",
"question": "PR labels that exempt from stale bot (comma-separated, e.g., 'pinned,security,work-in-progress', leave empty for default: 'pinned,security')",
"required": false
},
{
"id": "exemptMilestones",
"question": "Exempt issues/PRs in milestones from stale bot? (true/false, leave empty for default: true)",
"required": false
},
{
"id": "exemptAssignees",
"question": "Exempt assigned issues/PRs from stale bot? (true/false, leave empty for default: true)",
"required": false
}
]
}
}