creating-pds-issues
About
This skill creates GitHub issues in NASA-PDS repositories using standardized organizational templates like bug reports and feature requests. It automatically detects the repository context when run from a cloned git directory and uses GitHub CLI for authentication. Use it when developers need to file or submit structured PDS issues.
Quick Install
Claude Code
Recommended/plugin add https://github.com/majiayu000/claude-skill-registrygit clone https://github.com/majiayu000/claude-skill-registry.git ~/.claude/skills/creating-pds-issuesCopy and paste this command in Claude Code to install this skill
Documentation
Creating PDS Issues Skill
This skill creates GitHub issues in NASA-PDS repositories using the official organizational templates. It ensures consistent issue formatting while keeping content clear and concise.
Prerequisites
- GitHub CLI (
gh) must be installed and authenticated - User must have write access to the target NASA-PDS repository
Workflow
1. Gather Information
Detect Current Repository (if applicable):
If the user is running this skill from within a cloned git repository, automatically detect the repository name:
# Check if in a git repo - try origin first, then upstream
git remote get-url origin 2>/dev/null || git remote get-url upstream 2>/dev/null
If the remote URL matches NASA-PDS/<repo-name>, use that as the default repository.
Edge Cases:
- Multiple remotes: Prefer
originfirst, then fall back toupstreamor other NASA-PDS remotes - Forks: If the detected repository is a fork (personal namespace), check for an
upstreamremote pointing to NASA-PDS - Non-NASA-PDS repos: If no NASA-PDS remote is found, ask the user which repository to use
- Ambiguous remotes: If multiple NASA-PDS remotes exist, ask the user to clarify
Determine Issue Type:
Ask the user what type of issue to create using the AskUserQuestion tool with these options:
- Bug Report - Report defects or unexpected behavior
- I&T Bug Report - Internal Integration & Test bug report (requires test case references)
- Feature Request - Propose new features or enhancements
- Task - Internal development task (often sub-tasks of larger stories)
- Vulnerability - Security vulnerabilities or threats
- Release Theme - High-level epic for release planning
Gather Template-Specific Information:
Then gather the required information based on the template type:
For Bug Reports:
- Repository name (auto-detect from git remote, or ask if not in a repo or unclear)
- Brief title following format:
<system feature> <is not/does not> <expected behaviour> - Bug description (what happened)
- Expected behavior (what should have happened)
- Steps to reproduce (numbered list)
- Environment info (version, OS, etc.)
For I&T Bug Reports:
- Repository name (auto-detect from git remote, or ask if not in a repo or unclear)
- Brief title following format:
<system feature> <is not/does not> <expected behaviour> - Bug description (what happened)
- Expected behavior (what should have happened)
- Related test cases (TestRail or other test case references - REQUIRED)
- Steps to reproduce (numbered list)
- Environment info (version, OS, etc.)
For Feature Requests:
- Repository name (auto-detect from git remote, or ask if not in a repo or unclear)
- User story title:
As a <role>, I want to <accomplish> - User persona (e.g., "Data Engineer", "Node Operator")
- Motivation (why is this needed?)
- Additional context
For Tasks:
- Repository name (auto-detect from git remote, or ask if not in a repo or unclear)
- Task type (sub-task or theme)
- Description (clear but not excessive)
For Vulnerabilities:
- Repository name (auto-detect from git remote, or ask if not in a repo or unclear)
- Title:
<system feature> <is not/does not> <expected behaviour> - Vulnerability description
- Expected secure behavior
- Reproduction steps
- Environment info
For Release Themes:
- Repository name (auto-detect from git remote, or ask if not in a repo or unclear)
- Description of the release theme
2. Fill the Template
Use the cached templates in resources/templates/ directory. If templates are not cached, run the caching script first:
cd creating-pds-issues
node scripts/cache-templates.mjs
Fill templates with these guidelines:
Content Style:
- Be clear and specific, but concise
- Avoid unnecessary elaboration or "novel-length" descriptions
- Use bullet points and numbered lists for clarity
- Include only essential technical details
- Skip optional fields unless user provides information
Security and Privacy - CRITICAL:
- Remove or sanitize all sensitive information before creating the issue
- Replace actual file paths with generic examples (e.g.,
/Users/john/secrets/api-keys.txt→/path/to/file.txt) - Remove usernames, email addresses, and personal identifiers
- Replace IP addresses with dummy values (e.g.,
192.168.1.100→10.0.0.1) - Strip API keys, tokens, passwords, and credentials
- Sanitize database connection strings and internal URLs
- Use placeholder hostnames (e.g.,
prod-server-01.internal.nasa.gov→server.example.com) - Remove proprietary or confidential information
- If uncertain whether information is sensitive, ASK THE USER before including it
Required Field Examples:
Bug description (good):
When validating a PDS4 label with nested tables, the validator throws a NullPointerException
on line 342 of TableValidator.java. This occurs with labels containing 3+ nested table
definitions.
Bug description (too verbose):
I was working on my project late last night and I noticed that when I tried to validate
my carefully crafted PDS4 label that I had been working on for several days, the system
unexpectedly threw an error. I had been following all the documentation...
[continues for several paragraphs]
Expected behavior (good):
Validator should successfully validate labels with nested tables or provide a clear
error message about nesting limitations.
Reproduction steps (good):
1. Create PDS4 label with 3 nested <Table_Delimited> elements
2. Run: validate my-label.xml
3. Observe NullPointerException in output
Feature motivation (good):
...so that I can validate labels in CI/CD pipelines without manual intervention,
reducing deployment time from hours to minutes.
Sanitization Examples:
Before (UNSAFE - contains sensitive info):
When I run the validator on /Users/alice.johnson/Documents/NASA/mission-data/secret-project/labels/experiment-123.xml
using the API key sk-1234567890abcdef, it fails to connect to the database at
postgresql://admin:P@ssw0rd123@10.42.15.8:5432/pds_prod
After (SAFE - sanitized):
When running the validator on a PDS4 label file with the API configured, it fails to
connect to the PostgreSQL database with a connection timeout error.
Before (UNSAFE - contains internal paths):
The error log at /home/ops/pds-services/logs/validator-2024-11-13-prod.log shows:
ERROR: Connection refused by host pds-db-primary-01.jpl.nasa.gov
After (SAFE - sanitized):
The error log shows:
ERROR: Connection refused by database host
3. Create the Issue
Use GitHub CLI to create the issue with appropriate labels and metadata:
Default Assignee:
By default, issues requiring triage are assigned to jordanpadams. Users can override this by setting the PDS_ISSUE_ASSIGNEE environment variable or by using the --assignee flag.
Bug Report:
gh issue create \
--repo NASA-PDS/<repo-name> \
--title "<title>" \
--body "<filled-template-body>" \
--label "bug,needs:triage" \
--assignee "${PDS_ISSUE_ASSIGNEE:-jordanpadams}"
I&T Bug Report:
gh issue create \
--repo NASA-PDS/<repo-name> \
--title "<title>" \
--body "<filled-template-body>" \
--label "B15.1,bug,needs:triage" \
--assignee "${PDS_ISSUE_ASSIGNEE:-jordanpadams}"
Feature Request:
gh issue create \
--repo NASA-PDS/<repo-name> \
--title "<title>" \
--body "<filled-template-body>" \
--label "needs:triage,requirement" \
--assignee "${PDS_ISSUE_ASSIGNEE:-jordanpadams}"
Task:
gh issue create \
--repo NASA-PDS/<repo-name> \
--title "<title>" \
--body "<filled-template-body>" \
--label "task,i&t.skip"
Vulnerability:
gh issue create \
--repo NASA-PDS/<repo-name> \
--title "<title>" \
--body "<filled-template-body>" \
--label "security,bug,needs:triage" \
--assignee "${PDS_ISSUE_ASSIGNEE:-jordanpadams}"
Release Theme:
gh issue create \
--repo NASA-PDS/<repo-name> \
--title "<title>" \
--body "<filled-template-body>" \
--label "theme,Epic,i&t.skip"
Template Body Format:
The body should mirror the YAML template structure but in markdown. For example, a bug report body:
## Checked for duplicates
Yes - I've already checked
## 🐛 Describe the bug
[Bug description here]
## 🕵️ Expected behavior
[Expected behavior here]
## 📜 To Reproduce
1. [Step 1]
2. [Step 2]
3. [Step 3]
## 🖥 Environment Info
- Version of this software: vX.Y.Z
- Operating System: [OS details]
## 📚 Version of Software Used
[Version details]
## 🩺 Test Data / Additional context
[Context or N/A]
## 🦄 Related requirements
N/A
---
## For Internal Dev Team To Complete
## ⚙️ Engineering Details
[To be filled by engineering team]
## 🎉 Integration & Test
[To be filled by engineering team]
4. Confirm Success
After creating the issue:
- Display the issue URL to the user
- Confirm the issue was created successfully
- Remind user that internal sections (Engineering Details, I&T) will be filled by the PDS engineering team
Important Notes
- All issues are added to project NASA-PDS/6 (PDS Engineering portfolio backlog)
- Default assignee is jordanpadams for triage (configurable via
PDS_ISSUE_ASSIGNEEenvironment variable) - Leave internal sections blank - "Engineering Details" and "Integration & Test" fields are filled by the PDS engineering team after triage
- Skip optional fields unless user explicitly provides information
- Validate repository exists before creating issue using
gh repo view NASA-PDS/<repo-name>
Template Caching
Templates are cached locally in resources/templates/ to avoid repeated GitHub API calls. The caching script should:
- Clone or fetch the latest templates from NASA-PDS/.github
- Store them in
resources/templates/ - Update a timestamp file to track last cache update
Cache templates on first use or if cache is older than 7 days.
Forcing Cache Refresh:
If templates have been updated in NASA-PDS/.github and you need to refresh immediately:
# Option 1: Delete cache directory and re-run caching script
rm -rf creating-pds-issues/resources/templates/
cd creating-pds-issues
node scripts/cache-templates.mjs
# Option 2: Delete timestamp file to trigger automatic refresh
rm creating-pds-issues/resources/templates/.cache-timestamp
# Next skill invocation will automatically refresh templates
# Option 3: Set environment variable to force refresh
FORCE_TEMPLATE_REFRESH=true node scripts/cache-templates.mjs
Error Handling
- If GitHub CLI is not authenticated, prompt:
gh auth login - If repository doesn't exist, list available repos:
gh repo list NASA-PDS --limit 100 - If user lacks write access, display error and suggest contacting PDS Help Desk
- If required information is missing, ask user for specific details needed
Example Invocations
User: "Create a bug report for pds-registry about validation errors" → Ask which template, gather bug details, create issue
User: "File a feature request for the API to support batch operations" → Ask which repo, gather user story details, create issue
User: "I need to create a security vulnerability issue for validate" → Use vulnerability template, gather security details, create issue
GitHub Repository
Related Skills
algorithmic-art
MetaThis Claude Skill creates original algorithmic art using p5.js with seeded randomness and interactive parameters. It generates .md files for algorithmic philosophies, plus .html and .js files for interactive generative art implementations. Use it when developers need to create flow fields, particle systems, or other computational art while avoiding copyright issues.
subagent-driven-development
DevelopmentThis skill executes implementation plans by dispatching a fresh subagent for each independent task, with code review between tasks. It enables fast iteration while maintaining quality gates through this review process. Use it when working on mostly independent tasks within the same session to ensure continuous progress with built-in quality checks.
executing-plans
DesignUse the executing-plans skill when you have a complete implementation plan to execute in controlled batches with review checkpoints. It loads and critically reviews the plan, then executes tasks in small batches (default 3 tasks) while reporting progress between each batch for architect review. This ensures systematic implementation with built-in quality control checkpoints.
cost-optimization
OtherThis Claude Skill helps developers optimize cloud costs through resource rightsizing, tagging strategies, and spending analysis. It provides a framework for reducing cloud expenses and implementing cost governance across AWS, Azure, and GCP. Use it when you need to analyze infrastructure costs, right-size resources, or meet budget constraints.
