reason-machines/security-skills1 file

Unisecurityguard Academic Whistleblower Archive

Archive and documentation platform for academic employment transparency and whistleblowing in Chinese higher education institutions

Specification
Skill ID
reason-machines/security-skills/unisecurityguard-academic-whistleblower-archive
Publisher
reason-machines
Repository
security-skills
Installs
0
Files
1
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

reason-machines/security-skills/unisecurityguard-academic-whistleblower-archiveInstalls these files
  • SKILL.md

What this skill tells the agent

UniSecurityGuard Academic Whistleblower Archive

Skill by ara.so — Security Skills collection.

Overview

UniSecurityGuard is a GitHub-based archive platform documenting the experience of a Chinese academic who transitioned from associate professor to security guard. The project serves as a censorship-resistant backup for social media content that faces institutional pressure and platform removal. It demonstrates how to use GitHub as a transparent, immutable documentation platform for whistleblowing and advocacy.

Key Use Case: Preserving evidence of academic employment issues, institutional misconduct, and career transitions when primary platforms (Xiaohongshu/Little Red Book) are threatened with censorship.

Primary Language: Markdown (documentation-focused)

Repository Structure:

  • README.md: Main narrative and updates
  • assets/: Screenshots and image evidence
  • Issues section: Community Q&A and documentation

Installation & Setup

Fork or Clone for Your Own Archive

# Clone the repository
git clone https://github.com/UniSecurityGuard/UniSecurityGuard.git
cd UniSecurityGuard

# Create your own backup archive (fork approach)
# 1. Fork via GitHub UI
# 2. Clone your fork
git clone https://github.com/YOUR_USERNAME/YOUR_ARCHIVE_NAME.git
cd YOUR_ARCHIVE_NAME

Initialize Your Own Archive

# Create basic structure
mkdir -p assets/{screenshots,documents,evidence}
touch README.md
touch TIMELINE.md
touch FAQ.md

# Initialize git
git init
git add .
git commit -m "Initial archive setup"

# Push to GitHub (create repo first on github.com)
git remote add origin https://github.com/YOUR_USERNAME/YOUR_ARCHIVE.git
git branch -M main
git push -u origin main

Core Patterns

1. Document Progressive Updates

The project uses the README.md as a chronological narrative with new updates at the top:

# [Latest Update - Critical Situation]

## [Date]: Current Status

Description of latest developments...

## [Earlier Date]: Previous Situation

Earlier context...

## Background

Original story and context...

2. Asset Organization

Store evidence systematically:

assets/
├── screenshots/
│   ├── 1.jpg          # Numbered chronologically
│   ├── 2.jpg
│   └── 3.jpg
├── documents/
│   ├── contract.pdf
│   └── correspondence.pdf
└── evidence/
    ├── salary_records/
    └── institutional_communications/

3. Embed Images in README

## Evidence Documentation

<img src="assets/screenshots/1.jpg" width="400" alt="Description of evidence">
<img src="assets/screenshots/2.jpg" width="400" alt="Context">
<img src="assets/screenshots/3.jpg" width="400" alt="Timeline proof">

4. Use Issues for FAQ and Community Support

The project uses 154+ issues as a documentation and Q&A system:

# Create structured issues for common questions

Issue #1: "关于学校施压的详细情况" (Details about institutional pressure)
Issue #2: "如何保护自己在类似情况下" (How to protect yourself in similar situations)
Issue #3: "法律建议和资源" (Legal advice and resources)

Real-World Implementation Examples

Example 1: Creating a Censorship-Resistant Archive

#!/bin/bash
# backup_social_media.sh
# Automate archiving of social media content to GitHub

ARCHIVE_DIR="./archive/$(date +%Y-%m-%d)"
mkdir -p "$ARCHIVE_DIR"

# Download screenshots (manual or automated via APIs)
# Save to archive directory
cp ~/Downloads/xiaohongshu_screenshots/* "$ARCHIVE_DIR/"

# Create daily update
cat > "$ARCHIVE_DIR/update.md" << EOF
# Update: $(date +%Y-%m-%d)

## Status
- Platform status: [Active/Restricted/Removed]
- Follower count: [NUMBER]
- Content removed: [YES/NO]

## New Developments
[Description]

## Evidence
$(ls "$ARCHIVE_DIR"/*.jpg | sed 's/^/- /')
EOF

# Commit to git
git add "$ARCHIVE_DIR"
git commit -m "Archive update: $(date +%Y-%m-%d)"
git push origin main

Example 2: Structured Timeline Documentation

Create TIMELINE.md:

# Career Transition Timeline

## 2025-12-27: Repository Created
- Initial backup platform established
- 3 key screenshots archived
- Background story documented

## 2025-12: Institutional Pressure Begins
- 7 leaders visit rental apartment
- Demands to delete content and claim fiction
- Threats to reclaim salary and benefits

## 2025: Security Guard Transition
- Removed from associate professor position
- Transferred to campus security
- Salary: ¥4,000/month base + ¥800 security supplement
- Annual performance bonus: ¥6,000+

## Background: Academic Career
- Undergraduate: C9 university (华五)
- PhD: QS50 US university (withdrawn)
- Position: Associate professor at brother institution

Example 3: README Template for Academic Whistleblowing

# [Project Title]: Academic Employment Transparency

## ⚠️ Current Situation

[Latest critical update - always at top]

## Background

### Academic Credentials
- Undergraduate: [Institution]
- Graduate: [Institution]
- Position: [Title] at [Institution]

### Employment Transition
- Previous role: [Title], Salary: [Amount]
- Current role: [Title], Salary: [Amount]
- Reason for transition: [Description]

## Institutional Response

### Pressure Tactics
1. [Specific action]
2. [Specific threat]
3. [Specific demand]

### Evidence
<img src="assets/evidence_1.jpg" width="400" alt="Evidence description">

## Documentation Purpose

This repository serves as:
1. Immutable record of events
2. Backup for censored social media content
3. Resource for others in similar situations
4. Transparent accountability mechanism

## How to Support

- ⭐ Star this repository for visibility
- 📋 Open issues with questions or similar experiences
- 🔄 Share (carefully, considering safety)
- 📸 Screenshot and archive content locally

Example 4: Automated Git Backup Script

#!/usr/bin/env python3
# auto_archive.py - Automated content archiving

import os
import json
from datetime import datetime
import subprocess

class AcademicArchive:
    def __init__(self, repo_path):
        self.repo_path = repo_path
        self.assets_dir = os.path.join(repo_path, 'assets')
        
    def add_update(self, title, content, evidence_files=None):
        """Add new update to README"""
        timestamp = datetime.now().strftime('%Y-%m-%d %H:%M')
        
        update = f"\n# {title}\n\n"
        update += f"**Date**: {timestamp}\n\n"
        update += f"{content}\n\n"
        
        if evidence_files:
            update += "## Evidence\n\n"
            for f in evidence_files:
                # Copy evidence to assets
                dest = os.path.join(self.assets_dir, os.path.basename(f))
                subprocess.run(['cp', f, dest])
                update += f'<img src="assets/{os.path.basename(f)}" width="400" alt="">\n'
        
        # Prepend to README
        readme_path = os.path.join(self.repo_path, 'README.md')
        with open(readme_path, 'r') as f:
            existing = f.read()
        
        with open(readme_path, 'w') as f:
            f.write(update + existing)
        
        return update
    
    def commit_and_push(self, message):
        """Commit changes and push to GitHub"""
        os.chdir(self.repo_path)
        subprocess.run(['git', 'add', '.'])
        subprocess.run(['git', 'commit', '-m', message])
        subprocess.run(['git', 'push', 'origin', 'main'])
    
    def create_issue_faq(self, question, answer):
        """Create issue for FAQ (requires GitHub CLI)"""
        subprocess.run([
            'gh', 'issue', 'create',
            '--title', question,
            '--body', answer,
            '--label', 'faq'
        ])

# Usage example
archive = AcademicArchive('/path/to/UniSecurityGuard')

# Add update with evidence
archive.add_update(
    title="Latest Institutional Pressure",
    content="""
    School leadership removed the chair from security booth.
    Reason: "Security guards shouldn't sit - it doesn't look proper."
    Now standing 8 hours straight daily.

Use this skill in a project

Open any RiverX project, search the Skills panel for reason-machines/security-skills/unisecurityguard-academic-whistleblower-archive, and install it in one click.

Use this skill