Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions docs/github-account-suspension-appeal-tracker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# GitHub Account Suspension Appeal Tracker

Created: 2026-07-02

Purpose: track GitHub-backed Kiro accounts that failed relogin because the
GitHub account appeared suspended, disabled, or otherwise abnormal, so appeals
can be filed one by one later.

## Appeal Queue

| GitHub username | Observed status | Evidence/source | Appeal status | Notes |
|---|---|---|---|---|
| `gfryuuu` | Suspended/disabled | GitHub relogin attempt reached a suspended-account state; user prepared an appeal for this account | Not submitted in repo | Include username in subject and description. Student/inactivity context: about two months if still accurate. |
| `kdhhrj` | Suspended/disabled | GitHub relogin attempt was blocked by a suspended-account state | Not submitted in repo | Recheck exact GitHub support page text before drafting. |
| `hfdery` | Suspended/disabled | User confirmed this account was also disabled during relogin triage | Not submitted in repo | Recheck exact GitHub support page text before drafting. |
| `ljhyugg` | Suspended/disabled | User confirmed this account was gone/disabled during relogin triage | Not submitted in repo | Recheck exact GitHub support page text before drafting. |
| `hfdryhy` | Suspended/disabled | User confirmed this account was also disabled during relogin triage | Not submitted in repo | Recheck exact GitHub support page text before drafting. |
| `hfdvbgt` | Abnormal during relogin | User reported it was not normal during relogin triage | Not submitted in repo | Verify whether GitHub labels it suspended, disabled, locked, or another restriction before appeal wording. |
| `hfdegh` | Abnormal during relogin | User reported it was not normal during relogin triage | Not submitted in repo | Verify whether GitHub labels it suspended, disabled, locked, or another restriction before appeal wording. |
| `zjhferw` | Abnormal during relogin | User reported it was not normal during relogin triage | Not submitted in repo | Verify whether GitHub labels it suspended, disabled, locked, or another restriction before appeal wording. |

## Already Recovered

| GitHub username | Current state | Notes |
|---|---|---|
| `usmore` | Recovered and reimported into Kiro | Do not include in the appeal queue unless it becomes restricted again. Email recorded in llm-access as `unsmore@utexas.edu`. |

## Appeal Preparation Checklist

For each queued account:

1. Reopen the GitHub login/support page and capture the exact restriction text.
2. Draft a fresh appeal with `skills/github-account-suspension-appeal`.
3. Use the exact username in both the subject and the restricted-account field.
4. Mention the student/inactivity context only when it is true for that account.
5. Do not claim hacking, exact dates, or policy compliance history unless there is evidence.
6. Update `Appeal status` after submission, including any GitHub ticket ID if shown.
100 changes: 100 additions & 0 deletions skills/github-account-suspension-appeal/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
name: github-account-suspension-appeal
description: Use when a GitHub account is suspended, restricted, limited, disabled, locked, or blocked and the user needs an appeal, support ticket, account limitation explanation, or form-field wording in English.
---

# GitHub Account Suspension Appeal

## Overview

Prepare concise, truthful English appeals for GitHub account restrictions. The goal is to help Support review the restriction, not to argue, threaten, confess unknown wrongdoing, or reuse a stale template.

## Intake

Collect only facts the user can stand behind:

- restricted account username
- visible error text, such as `Account suspended` or a Terms of Service notice
- rough inactivity period, such as `about two months`
- identity/context, such as being a student with exams, coursework, internship work, travel, or other ordinary reasons for not logging in
- what changed today: tried to log in, resume school/project work, or connect a service
- whether the user is willing to verify account ownership or provide more information

If a fact is missing, omit it or ask for it. Do not invent repository activity, dates, organizations, school names, locations, or previous compliance history.

## Form Fields

For GitHub Support forms, map intent to fields this way:

| Field | Preferred answer |
|---|---|
| Subject | Include the username and appeal intent, e.g. `Appeal for Suspended GitHub Account: <username>` |
| Please describe your account limitation issue | Explain the restriction, the inactive period, the student reason, lack of known violation, and willingness to verify |
| Username associated with the restricted account | The exact username only |
| Need help removing domains or content from a repository? | Usually `No` for account suspension appeals |
| Type of Issue | Prefer an account-access or restricted-account option if present; if forced between error and API rate limit, choose the error/bug option, not API rate limit |

Use the current form labels if they differ. Do not overfit to old GitHub UI wording.

## Writing Rules

- Write in calm, respectful English.
- Put the username in both the subject and first paragraph when known.
- Say the account is suspended or restricted based on what the user saw.
- Mention the student context only as a plausible reason for inactivity, not as a demand for special treatment.
- Use `about two months` or another approximate period unless the user provides exact dates.
- Include `willing to verify` ownership or provide additional information.
- Ask GitHub to review and explain the restriction.
- Do not admit wrongdoing unless the user explicitly confirms it.
- Do not claim the account was hacked unless the user has evidence.
- Do not claim exact dates unless provided.
- Do not invent evidence, ticket numbers, school names, repositories, or support history.

## Variation Rules

Always generate a fresh draft each time.

- Do not reuse the same opening. Rotate between openings like `I am writing to appeal...`, `I would like to request a review...`, `I recently discovered...`, or `Could you please review...`.
- Rotate sentence order: sometimes lead with the restriction, sometimes with the username, sometimes with the student/inactivity context.
- Vary the subject line while preserving meaning:
- `Appeal for Suspended GitHub Account: <username>`
- `Request to Review Account Restriction for <username>`
- `Suspended Account Appeal - <username>`
- `Account Access Review Request: <username>`
- Vary phrasing for uncertainty:
- `I am not aware of any activity that would violate GitHub's policies.`
- `I do not know what triggered the restriction.`
- `If there was a security or policy concern, I would appreciate guidance.`
- Vary the close:
- `I am happy to provide any verification needed.`
- `Please let me know if you need additional information from me.`
- `I would appreciate a review of the restriction and any next steps.`

Keep the facts stable while changing phrasing. Randomness means varied wording and structure, not changed claims.

## Output Contract

Return exactly the fields the user needs, unless they ask for a full ticket:

```text
Subject:
...

Please describe your account limitation issue:
...

What is the username associated with the restricted account?
...
```

When the user asks about form choices, answer the choice directly first, then give one short reason.

## Common Mistakes

- Treating a suspension appeal as a bug report without asking for review.
- Choosing API rate limit for an account restriction.
- Saying `Yes` to domain/content removal when the user only wants account access restored.
- Writing a generic template that omits the username.
- Repeating the same appeal text for multiple accounts.
- Overexplaining student status instead of keeping it as context.
- Promising future behavior or admitting a violation the user did not confirm.
4 changes: 4 additions & 0 deletions skills/github-account-suspension-appeal/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
interface:
display_name: "GitHub Account Appeal"
short_description: "Draft varied GitHub suspension appeals"
default_prompt: "Use $github-account-suspension-appeal to draft a concise GitHub account suspension appeal."
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import re
import unittest
from pathlib import Path


SKILL = Path(__file__).resolve().parents[1] / "SKILL.md"


class GithubAccountSuspensionAppealSkillTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.text = SKILL.read_text(encoding="utf-8")

def test_frontmatter_is_discoverable(self):
self.assertIn("name: github-account-suspension-appeal", self.text)
description = re.search(r"^description: (.+)$", self.text, re.MULTILINE)
self.assertIsNotNone(description)
self.assertTrue(description.group(1).startswith("Use when "))
for keyword in ("GitHub", "suspended", "restricted", "appeal"):
self.assertIn(keyword, description.group(1))

def test_core_workflow_sections_exist(self):
for heading in (
"## Intake",
"## Form Fields",
"## Writing Rules",
"## Variation Rules",
"## Output Contract",
"## Common Mistakes",
):
self.assertIn(heading, self.text)

def test_required_appeal_facts_are_covered(self):
for phrase in (
"username",
"student",
"about two months",
"Account suspended",
"Terms of Service",
"willing to verify",
):
self.assertIn(phrase, self.text)

def test_randomization_is_required_without_fabrication(self):
for phrase in (
"Do not reuse the same opening",
"Rotate sentence order",
"Do not invent",
"Do not admit wrongdoing",
"Do not claim exact dates unless provided",
):
self.assertIn(phrase, self.text)

def test_template_repetition_is_not_allowed(self):
self.assertNotIn("[TODO", self.text)
self.assertNotIn("copy this exact template", self.text.lower())
self.assertIn("generate a fresh draft", self.text)


if __name__ == "__main__":
unittest.main()
81 changes: 0 additions & 81 deletions skills/kiro-social-google-onboarder/SKILL.md

This file was deleted.

4 changes: 0 additions & 4 deletions skills/kiro-social-google-onboarder/agents/openai.yaml

This file was deleted.

Loading
Loading