AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified Apache-2.0 Self-run

Generate Wiki

skill-crossoverjie-skills-generate-grpc-java-wiki · by crossoverJie

>

No reviews yet
0 installs
5 views
0.0% view→install

Install

$ agentstack add skill-crossoverjie-skills-generate-grpc-java-wiki

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-crossoverjie-skills-generate-grpc-java-wiki)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Generate Wiki? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Generate Wiki Skill

Role Definition: You are a senior Java architect skilled in:

  • Analyzing code structure of gRPC + Java microservice projects
  • Understanding the mapping between proto definitions and Java implementations
  • Writing clear and accurate technical documentation
  • Identifying core business logic and key code paths

Agent-driven workflow for generating consistent wiki documentation for gRPC + Java projects.

What This Skill Does

This skill does not parse source code through built-in project-specific scripts.

Instead, it instructs the Agent to:

  • inspect the repository with code-search and file-reading tools
  • identify gRPC services, proto definitions, and Java implementations
  • generate a consistent wiki structure
  • follow the provided style and output requirements

Important: Not a Generic Wiki Template

This skill provides a framework, not a one-size-fits-all solution. Each project has unique characteristics that require targeted optimization:

  • Different business domains — e-commerce, fintech, logistics, etc. each have specific documentation needs
  • Different architectures — even within gRPC + Java, service patterns, middleware usage, and data flows vary
  • Different team needs — some teams need detailed API specs, others need high-level architecture overviews

You should customize the generated wiki based on:

  1. Your project's specific business logic and domain terminology
  2. The actual service dependencies and data flows in your codebase
  3. Your team's documentation standards and review requirements
  4. The level of detail your developers need (API reference vs. architecture guide)

The templates and structure provided are starting points — expect to refine them through multiple iterations with the Agent to match your project's specific needs.

Required Workflow

See [docs/workflow.md](docs/workflow.md) for the complete Agent workflow.

Summary

Phase 1: Discovery - Find all components first

  1. Scan - Find ALL proto, PowerJob, and Pulsar files
  2. Inventory - Record ALL services, methods, messages, jobs, consumers
  3. Output - List complete component inventory before generating

Phase 2: Generate Component Pages - Create detail documentation (with parallel optimization)

  1. Check Component Count - If total components ≥ 50, enable parallel generation
  2. Generate - Create wiki pages for ALL discovered components:
  • Every RPC method → service/{Service}/{Method}.html
  • Every PowerJob processor → job/{JobClass}/execute.html (if present)
  • Every Pulsar consumer → consumer/{Consumer}/index.html (merged structure)
  • Parallel Strategy: Different services/jobs/consumers can be generated in parallel
  • Sequential Constraint: Methods within same service are generated sequentially
  • Note: Consumers use merged structure (index.html only, no separate consume.html)

Phase 3: Generate Summary Pages (LAST) - Aggregate from finalized generated content

  1. Re-read Generated Component Pages - After all gRPC, PowerJob, and Pulsar pages are complete, re-read:
  • service/**/index.html and service/**/*.html
  • job/index.html and job/*/index.html (if present)
  • consumer/index.html and consumer/*/index.html (if present)
  • the component inventory manifest produced during Phase 1
  1. Generate System Architecture (01-system-architecture.html) - Based on completed component pages, all discovered services, jobs, consumers, dependencies, and message flows
  2. Generate Core Features (02-core-features.html) - Based on completed gRPC, PowerJob, and Pulsar component analysis, grouped into business capabilities
  3. Generate ER Diagram (03-er-diagram.html) - Based on ALL proto message types plus completed service method request/response mappings
  4. Verify - Run the quality checklist before finishing

Important: System Architecture, Core Features, and ER Diagram MUST be generated AFTER all component pages are complete. They MUST re-read the completed component pages and component inventory manifest as the source of truth. Do not generate summary pages from memory, partial discovery results, or assumptions.

Output Requirements

Output Format Requirements

All generated pages must be rendered as HTML, not raw markdown files.

Generated structure:

wiki/
├── index.html              # Main navigation page (renders all content)
├── assets/
│   ├── css/style.css       # Unified styling (includes collapsible nav styles)
│   ├── js/nav-data.js      # Navigation tree data (generated from components)
│   └── js/nav.js           # Dynamic navigation renderer
├── service/                # gRPC API documentation (always)
│   └── ServiceName/        # One folder per gRPC service
│       ├── index.html      # Service overview page
│       ├── MethodName.html # One HTML file per RPC method
│       └── ...
├── job/                    # PowerJob scheduled jobs (if used)
│   └── JobClassName/       # One folder per PowerJob processor
│       ├── index.html      # Job overview page
│       └── execute.html    # Job execute method documentation
├── consumer/               # Pulsar consumers (if used)
│   ├── index.html          # Consumer overview page (list all consumers)
│   └── ConsumerClassName/  # One folder per Pulsar consumer
│       └── index.html      # Consumer detail page (merged overview + method)
├── 01-system-architecture.html   # System architecture (rendered HTML) - GENERATED LAST
├── 02-core-features.html         # Core features (rendered HTML) - GENERATED LAST
└── 03-er-diagram.html            # ER diagram (rendered HTML) - GENERATED LAST

Note:

  • job/ and consumer/ directories are created only when the project actually uses PowerJob or Pulsar respectively.
  • System Architecture, Core Features, and ER Diagram MUST be generated LAST after all component pages are complete.
  • Phase 3 source of truth: before writing 01-system-architecture.html, 02-core-features.html, or 03-er-diagram.html, the Agent MUST re-read all generated gRPC, PowerJob, and Pulsar pages plus the component inventory manifest. The summary pages are second-pass aggregation outputs, not first-pass guesses.
  • nav-data.js must be regenerated whenever components are added/removed/renamed.

Rendering approach (choose one):

  1. Static HTML generation: Convert each markdown template to complete HTML with styling
  2. SPA with router: Single index.html that dynamically loads and renders markdown content

If using approach #2 (SPA):

  • Only one index.html at root
  • Markdown files can be kept as .md but must be rendered in-browser
  • URL routing must work (e.g., /#/service/UserService/GetUser)

Important: Users should never see raw markdown or download .md files when clicking links.

Parallel Generation Strategy

When to use parallel generation:

Total Components = gRPC Methods + PowerJob Processors + Pulsar Consumers

If Total Components >= 50:
    → Enable SUBAGENT PARALLEL generation
    → Improves speed by 3-5x on large projects

Independence Rules (What can be parallel):

| Component Type | Parallel Strategy | Constraint | |---------------|-------------------|------------| | gRPC Methods | Parallel across different services | Sequential within same service | | PowerJob Processors | Always parallel | Independent jobs | | Pulsar Consumers | Always parallel | Independent consumers |

Example Batch Strategy:

# Batch 1 (Parallel)
- ServiceA.GetUser
- ServiceB.CreateOrder
- ServiceC.UpdateInventory
- OrderSyncJob
- OrderEventConsumer

# Batch 2 (Parallel)
- ServiceA.ListUsers
- ServiceB.CancelOrder
- ServiceC.ListInventory
- DataCleanJob
- PaymentResultConsumer

# ... continue until all components processed

Subagent Implementation:

// Determine if parallel generation is needed
const totalComponents = grpcMethods.length + powerjobCount + pulsarCount;
const useParallel = totalComponents >= 50;

if (useParallel) {
    // Group independent components into batches
    const batches = createBatches(components);
    
    for (const batch of batches) {
        // Launch subagent for each component in batch
        const subagents = batch.map(component => 
            Agent({
                description: `Generate ${component.type} page: ${component.name}`,
                prompt: `
                    Generate wiki page for ${component.name}
                    Type: ${component.type}
                    Template: ${component.template}
                    Metadata: ${JSON.stringify(component.metadata)}
                    
                    Save to: ${component.outputPath}
                `
            })
        );
        
        // Wait for current batch to complete before next batch
        await Promise.all(subagents);
    }
} else {
    // Sequential generation for small projects
    for (const component of components) {
        generatePage(component);
    }
}

Important:

  • Always wait for ALL component pages to complete before Phase 3 (Summary Pages)
  • Subagents must use the same source link pattern and templates (auto-detect GitHub or GitLab from git remote -v)
  • Each subagent saves its output file independently

Directory Grouping Rules

gRPC Services

Group RPC method documentation by gRPC Service name:

  • Each gRPC service gets its own subdirectory under service/
  • Directory name matches the service name in proto (e.g., UserService/)
  • All RPC methods belonging to the same service go into the same folder
  • Method file names match the RPC method name (e.g., GetUser.html)
PowerJob Processors

Group PowerJob documentation by Job Processor class name:

  • Each PowerJob processor gets its own subdirectory under job/
  • Directory name matches the processor class name (e.g., OrderSyncJob/)
  • Must identify: Job name, cron expression, processor class, execute method
  • Content should analyze: job purpose, scheduling logic, business implementation

Example structure:

job/
├── OrderSyncJob/           # Class: OrderSyncJob implements BasicProcessor
│   └── index.html         # Merged job page (overview + execute method details)
└── DataCleanJob/
    └── index.html         # Merged job page

Merged Structure: Since each PowerJob processor implements BasicProcessor with only one process() method, the documentation uses a merged structure:

  • Single index.html contains both job overview and complete execute/process method details
  • No separate execute.html file
  • This reduces navigation depth and improves user experience, consistent with Pulsar consumer documentation
Pulsar Consumers

Group Pulsar consumer documentation by Consumer class name:

  • Each Pulsar consumer gets its own subdirectory under consumer/
  • Directory name matches the consumer class name (e.g., OrderEventConsumer/)
  • Must identify: Topic name, subscription name, consumer class, receive method
  • Content should analyze: message purpose, consumption logic, business handling

Example structure:

consumer/
├── index.html              # Consumer overview page (lists all consumers with stats)
├── OrderEventConsumer/     # Class consuming order events
│   └── index.html          # Merged consumer page (overview + receive method)
└── PaymentResultConsumer/
    └── index.html          # Merged consumer page

Merged Structure: Since each consumer typically has only one receive() method, the documentation uses a merged structure:

  • Single index.html contains both consumer overview and method details
  • No separate consume.html file
  • This reduces navigation depth and improves user experience

Page Templates

All component types follow consistent documentation templates:

  • [templates/page-service.md](templates/page-service.md) - gRPC service method documentation
  • [templates/page-powerjob.md](templates/page-powerjob.md) - PowerJob processor documentation
  • [templates/page-pulsar.md](templates/page-pulsar.md) - Pulsar consumer detail documentation
  • [templates/page-pulsar-overview.md](templates/page-pulsar-overview.md) - Pulsar consumer overview page (lists all consumers)
  • [templates/page-architecture.md](templates/page-architecture.md) - System architecture template
  • [templates/page-features.md](templates/page-features.md) - Core features template
  • [templates/page-er.md](templates/page-er.md) - ER diagram template with domain model and zoom/pan support

Page Content Standards

All pages follow a fixed directory structure for consistency:

gRPC Service Overview Page Structure (index.html)

The service overview page (index.html) provides a summary of the gRPC service with modern dashboard styling:

Required CSS Styles (inline in `` tag):

/* Breadcrumb Navigation */
.breadcrumb {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 20px;
    font-size: 14px;
    color: var(--text-secondary);
}
.breadcrumb a { color: var(--primary-color); text-decoration: none; }
.breadcrumb a:hover { text-decoration: underline; }
.breadcrumb-separator { opacity: 0.5; }
.breadcrumb-current { color: var(--text-primary); font-weight: 500; }

/* Service Header with Gradient */
.service-header {
    display: flex;
    align-items: center;
    gap: 20px;
    margin-bottom: 30px;
    padding: 30px;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    border-radius: 12px;
    color: white;
    box-shadow: 0 4px 20px rgba(102, 126, 234, 0.3);
}
.service-icon { font-size: 48px; opacity: 0.9; }
.service-title h1 { font-size: 28px; margin-bottom: 8px; color: white; }
.service-title p { font-size: 14px; opacity: 0.9; color: rgba(255, 255, 255, 0.9); }

/* Stats Dashboard */
.stats-dashboard {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 16px;
    margin-bottom: 32px;
}
.stat-card {
    background: var(--card-bg);
    border-radius: 12px;
    padding: 24px;
    text-align: center;
    border: 1px solid var(--border-color);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
    transition: all 0.2s ease;
}
.stat-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.stat-card.primary { background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%); border-color: #93c5fd; }
.stat-card.success { background: linear-gradient(135deg, #d1fae5 0%, #a7f3d0 100%); border-color: #6ee7b7; }
.stat-card.warning { background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%); border-color: #fcd34d; }
.stat-icon { font-size: 24px; margin-bottom: 8px; }
.stat-value { font-size: 32px; font-weight: 700; line-height: 1; }
.stat-card.primary .stat-value { color: #1e40af; }
.stat-card.success .stat-value { color: #065f46; }
.stat-card.warning .stat-value { color: #92400e; }
.stat-label { font-size: 13px; color: var(--text-secondary); margin-top: 8px; }

/* Method Table with Clickable Rows */
.method-table tr {
    cursor: pointer;
    transition: background-color 0.15s ease;
}
.method-table tr:hover { background-color: #eff6ff !important; }
.method-table tr:hover td { color: var(--primary-color); }
.method-table td:first-child {
    font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', monospace;
    font-size: 13px;
}

/* Status Badge Improvements */
.badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 500;
}
.badge::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
}
.badge-success::before { background: var(--success-color); }
.badge-danger::before { background: var(--danger-color); }
.badge-warning::before { background: var(--warning-color); }

/* Section Improvements */
.section { margin-bottom: 40px; }
.section-title {
    font-size: 20px;
    font-weight: 600;
    margi

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [crossoverJie](https://github.com/crossoverJie)
- **Source:** [crossoverJie/skills](https://github.com/crossoverJie/skills)
- **License:** Apache-2.0

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.