Skip to content
Back to skills

Get Release Dates

ASecurity

Fetch OpenShift release dates and metadata from Sippy API

  • 666 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 8, 2026
developmentpythonbashapidocumentation

Works with

  • api

Security analysis

A100/100

Scanned February 10, 2026

npx -y skills add majiayu000/claude-skill-registry --skill get-release-dates --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Get Release Dates?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Get Release Dates
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-get-release-dates/badge)](https://www.skillsdirectory.com/skills/majiayu000-get-release-dates)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: Get Release Dates
description: Fetch OpenShift release dates and metadata from Sippy API
---

# Get Release Dates

This skill provides functionality to fetch OpenShift release information including GA dates and development start dates from the Sippy API.

## When to Use This Skill

Use this skill when you need to:

- Get GA (General Availability) date for a specific OpenShift release
- Find when development started for a release
- Identify the previous release in the sequence
- Validate if a release exists in Sippy
- Determine if a release is in development or has GA'd

## Prerequisites

1. **Python 3 Installation**

   - Check if installed: `which python3`
   - Python 3.6 or later is required
   - Comes pre-installed on most systems

2. **Network Access**

   - The script requires network access to reach the Sippy API
   - Ensure you can make HTTPS requests to `sippy.dptools.openshift.org`

## Implementation Steps

### Step 1: Verify Prerequisites

First, ensure Python 3 is available:

```bash
python3 --version
```

If Python 3 is not installed, guide the user through installation for their platform.

### Step 2: Locate the Script

The script is located at:

```
plugins/component-health/skills/get-release-dates/get_release_dates.py
```

### Step 3: Run the Script

Execute the script with the release parameter:

```bash
# Get dates for release 4.21
python3 plugins/component-health/skills/get-release-dates/get_release_dates.py \
  --release 4.21

# Get dates for release 4.20
python3 plugins/component-health/skills/get-release-dates/get_release_dates.py \
  --release 4.20
```

### Step 4: Process the Output

The script outputs JSON data with the following structure:

```json
{
  "release": "4.21",
  "found": true,
  "ga": "2026-02-17T00:00:00Z",
  "development_start": "2025-09-02T00:00:00Z",
  "previous_release": "4.20"
}
```

**Field Descriptions**:

- `release`: The release identifier that was queried
- `found`: Boolean indicating if the release exists in Sippy
- `ga`: GA (General Availability) date. **If null, the release is still in development.**
- `development_start`: When development started for this release
- `previous_release`: The previous release in the sequence (empty string if none)

**If Release Not Found**:

```json
{
  "release": "99.99",
  "found": false
}
```

**Release Status - Development vs GA'd**:

- **In Development**: If `ga` is `null`, the release is still under active development
  ```json
  {
    "release": "4.21",
    "found": true,
    "development_start": "2025-09-02T00:00:00Z",
    "previous_release": "4.20"
  }
  ```
- **GA'd (Released)**: If `ga` has a timestamp, the release has reached General Availability
  ```json
  {
    "release": "4.17",
    "found": true,
    "ga": "2024-10-01T00:00:00Z",
    "development_start": "2024-05-17T00:00:00Z",
    "previous_release": "4.16"
  }
  ```

### Step 5: Use the Information

Based on the release dates:

1. **Determine release status**: Check if release is in development or GA'd
   - If `ga` is `null`: Release is still in development
   - If `ga` has a timestamp: Release has reached General Availability
2. **Determine release timeline**: Use `development_start` and `ga` dates
   - Calculate time in development: `ga` - `development_start`
   - For in-development releases: Calculate time since `development_start`
3. **Find related releases**: Use `previous_release` to navigate the release sequence
4. **Validate release**: Check `found` field before using the release in other operations

## Error Handling

The script handles several error scenarios:

1. **Network Errors**: If unable to reach Sippy API

   ```
   Error: URL Error: [reason]
   ```

2. **HTTP Errors**: If API returns an error status

   ```
   Error: HTTP Error 404: Not Found
   ```

3. **Invalid Release**: Script returns exit code 1 with `found: false` in output

4. **Parsing Errors**: If API response is malformed
   ```
   Error: Failed to fetch release dates: [details]
   ```

## Output Format

The script outputs JSON to stdout with:

- **Success**: Exit code 0, JSON with `found: true`
- **Release Not Found**: Exit code 1, JSON with `found: false`
- **Error**: Exit code 1, error message to stderr

## API Details

The script queries the Sippy releases API:

- **URL**: https://sippy.dptools.openshift.org/api/releases
- **Method**: GET
- **Response**: JSON containing all releases and their metadata

The full API response includes:

- `releases`: Array of all available release identifiers
- `ga_dates`: Simple mapping of release to GA date
- `dates`: Detailed mapping with GA and development_start dates
- `release_attrs`: Extended attributes including previous release

## Examples

### Example 1: Get Current Development Release

```bash
python3 plugins/component-health/skills/get-release-dates/get_release_dates.py \
  --release 4.21
```

Output:

```json
{
  "release": "4.21",
  "found": true,
  "development_start": "2025-09-02T00:00:00Z",
  "previous_release": "4.20"
}
```

### Example 2: Get GA'd Release

```bash
python3 plugins/component-health/skills/get-release-dates/get_release_dates.py \
  --release 4.17
```

Output:

```json
{
  "release": "4.17",
  "found": true,
  "ga": "2024-10-01T00:00:00Z",
  "development_start": "2024-05-17T00:00:00Z",
  "previous_release": "4.16"
}
```

### Example 3: Query Non-Existent Release

```bash
python3 plugins/component-health/skills/get-release-dates/get_release_dates.py \
  --release 99.99
```

Output:

```json
{
  "release": "99.99",
  "found": false
}
```

Exit code: 1

## Integration with Other Commands

This skill can be used in conjunction with other component-health skills:

1. **Before analyzing regressions**: Verify the release exists
2. **Timeline context**: Understand how long a release has been in development
3. **Release status**: Determine if a release is in development or has GA'd
4. **Release navigation**: Find previous/next releases in the sequence

## Notes

- The script uses Python's standard library only (no external dependencies)
- API responses are cached by Sippy, so repeated calls are fast
- Release identifiers are case-sensitive (use "4.21" not "4.21.0")
- OKD releases are suffixed with "-okd" (e.g., "4.21-okd")
- ARO releases have special identifiers (e.g., "aro-production")
- "Presubmits" is a special release for pull request data

## See Also

- Skill Documentation: `plugins/component-health/skills/list-regressions/SKILL.md`
- Sippy API: https://sippy.dptools.openshift.org/api/releases
- Component Health Plugin: `plugins/component-health/README.md`

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.