Migrate all repos into monorepo context folders

Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
      Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
      Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)

Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
This commit is contained in:
2026-06-30 20:39:52 +02:00
parent 2f2b295531
commit a5f8fb49ab
1717 changed files with 447332 additions and 0 deletions
+306
View File
@@ -0,0 +1,306 @@
# Personal Knowledge Base
A file-based personal knowledge graph that stores structured professional information in YAML, enabling tailored CV generation, interview-based knowledge collection, speaker introductions, and iterative review workflows.
The file system is the database. No build step, no server, no compilation required. Git provides version history and deployment.
## Directory Structure
```
project-root/
├── kb/ # Knowledge base data (YAML entity files)
│ ├── profiles/ # Person profile entities
│ ├── experiences/ # Work experience entities
│ ├── skills/ # Skill entities
│ ├── organizations/ # Organization entities
│ ├── projects/ # Project entities
│ ├── certifications/ # Certification entities
│ ├── tandems/ # Job sharing tandem entities
│ └── graph-index.yaml # Central index of all entities and relationships
├── templates/ # Document generation templates
│ ├── cv-templates/ # CV layout templates (Markdown)
│ └── intro-templates/ # Speaker introduction templates
├── output/ # Generated documents (gitignored or committed)
│ ├── cvs/ # Generated CV files
│ └── intros/ # Generated introduction files
├── sources/ # Imported source documents (PDFs, DOCX)
├── src/ # TypeScript validation and logic
├── .kiro/
│ ├── skills/ # Kiro agent skills
│ │ ├── interview-collect/ # Knowledge collection via interview
│ │ ├── cv-generate/ # Tailored CV generation
│ │ ├── talk-intro/ # Speaker introduction generation
│ │ └── kb-review/ # Knowledge base review and maintenance
│ └── steering/ # Kiro steering files (conventions)
└── README.md
```
### Directory Purposes
| Directory | Purpose |
|-----------|---------|
| `kb/` | Core data store. All entities stored as individual YAML files, one file per entity. |
| `kb/profiles/` | Person profiles with name, contact, summary, education, languages, and entity references. |
| `kb/experiences/` | Work experiences with title, organization, dates, description, achievements, and skills used. |
| `kb/skills/` | Skills with name, category, proficiency level, and years of experience. |
| `kb/organizations/` | Organizations with name, industry, and optional parent organization. |
| `kb/projects/` | Projects with description, organization, dates, skills used, and persons involved. |
| `kb/certifications/` | Certifications with issuer, date, and optional expiry. |
| `kb/tandems/` | Job sharing tandem definitions linking two partners with shared vision and collaboration model. |
| `templates/` | Markdown templates used by generation skills for consistent document formatting. |
| `output/` | Generated documents (CVs, introductions) produced by Kiro skills. |
| `sources/` | Imported source documents (PDFs, DOCX) used as reference for data extraction. |
| `src/` | TypeScript validation logic and utilities for schema enforcement and testing. |
## Kiro Skills
Four Kiro skills automate common workflows. Activate them through Kiro's skill system.
### interview-collect
**Purpose:** Conducts focused interview sessions to collect or update knowledge base data.
**How to activate:** Use the `/interview-collect` command or ask Kiro to run an interview session.
**What it does:**
- Identifies gaps in existing profiles (missing required and optional attributes)
- Asks focused questions — maximum 10 per session, covering one topic area
- Writes collected data to the appropriate entity YAML files
- Updates the graph index with new entities and relationships
- Detects conflicts with existing data and asks for resolution
### cv-generate
**Purpose:** Generates tailored CVs from knowledge base data matched against a job posting.
**How to activate:** Use the `/cv-generate` command or ask Kiro to generate a CV, providing a job posting.
**What it does:**
- Analyzes job posting requirements
- Selects relevant experiences, skills, and projects from the knowledge base
- Generates individual CVs emphasizing matching qualifications
- Generates tandem CVs (combined + 2 individual) for job sharing applications
- Outputs Markdown files in `output/cvs/`
- Never fabricates content — only uses data present in the knowledge base
### talk-intro
**Purpose:** Generates speaker introductions for talks and events.
**How to activate:** Use the `/talk-intro` command or ask Kiro to generate a speaker introduction, providing a talk topic and event context.
**What it does:**
- Produces three length variants: short (2-3 sentences), medium (paragraph), long (multi-paragraph)
- Adapts tone to event context (technical conference, business meeting, academic setting)
- Highlights relevant expertise from the person profile based on the talk topic
- Outputs Markdown files in `output/intros/`
### kb-review
**Purpose:** Initiates review sessions for knowledge base maintenance and enhancement.
**How to activate:** Use the `/kb-review` command or ask Kiro to review the knowledge base.
**What it does:**
- Calculates completeness scores per profile (filled attributes / total attributes)
- Identifies stale information based on last-modified dates
- Presents a prioritized list of areas needing updates
- Suggests relationship additions for graph consistency
- Recommends topics for the next interview session
## Entity Types and Schemas
All entity files use YAML format and share a common header:
```yaml
id: <kebab-case-unique-id>
type: <entity-type>
created: <ISO-8601 date>
modified: <ISO-8601 date>
```
### Person Profile
**Location:** `kb/profiles/<person-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `person` |
| `name.first` | string | yes | First name |
| `name.last` | string | yes | Last name |
| `name.display` | string | yes | Display name |
| `contact` | object | no | Email, LinkedIn, location |
| `summary` | string | no | Professional summary |
| `languages` | list | no | Languages with proficiency level |
| `education` | list | no | Education history entries |
| `skills` | list | no | References to skill entity IDs |
| `experiences` | list | no | References to experience entity IDs |
| `certifications` | list | no | References to certification entity IDs |
| `publications` | list | no | Publications list |
### Experience
**Location:** `kb/experiences/<experience-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `experience` |
| `title` | string | yes | Job title or role name |
| `organization` | string | yes | Reference to organization entity ID |
| `start` | date | yes | Start date (YYYY-MM) |
| `end` | date | no | End date (null = current) |
| `description` | string | no | Role description |
| `achievements` | list | no | List of achievements |
| `skills-used` | list | no | References to skill entity IDs |
| `projects` | list | no | References to project entity IDs |
### Skill
**Location:** `kb/skills/<skill-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `skill` |
| `name` | string | yes | Display name |
| `category` | string | yes | One of: programming-language, framework, methodology, soft-skill, domain |
| `level` | string | yes | One of: beginner, intermediate, advanced, expert |
| `years` | number | no | Years of experience |
| `context` | string | no | Notes on how/where the skill was developed |
### Organization
**Location:** `kb/organizations/<org-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `organization` |
| `name` | string | yes | Organization name |
| `industry` | string | yes | Industry sector |
| `parent` | string | no | Reference to parent organization entity ID |
| `website` | string | no | Organization website |
### Project
**Location:** `kb/projects/<project-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `project` |
| `name` | string | yes | Project name |
| `description` | string | no | Project description |
| `organization` | string | yes | Reference to organization entity ID |
| `start` | date | yes | Start date |
| `end` | date | no | End date |
| `skills-used` | list | no | References to skill entity IDs |
| `persons` | list | no | References to person entity IDs |
### Certification
**Location:** `kb/certifications/<cert-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `certification` |
| `name` | string | yes | Certification name |
| `issuer` | string | yes | Issuing organization |
| `date` | date | yes | Date obtained |
| `expires` | date | no | Expiry date |
| `person` | string | yes | Reference to person entity ID |
### Tandem (Job Sharing)
**Location:** `kb/tandems/<tandem-id>.yaml`
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | string | yes | Kebab-case unique identifier |
| `type` | string | yes | Always `tandem` |
| `partners` | list | yes | Exactly two person entity ID references |
| `shared-vision` | string | yes | Shared professional vision |
| `complementary-skills` | string | yes | How partners' skills complement each other |
| `collaboration-model` | string | yes | How work is divided and shared |
| `combined-narrative` | string | no | Joint professional narrative |
| `joint-competencies` | list | no | List of joint competency descriptions |
### Graph Index
**Location:** `kb/graph-index.yaml`
The central index lists all entities and their relationships:
```yaml
entities:
- id: <entity-id>
type: <entity-type>
name: <display-name>
relationships:
- from: <entity-id>
to: <entity-id>
type: <relationship-type>
context: <optional-reference>
```
**Relationship types:** `has_skill`, `worked_at`, `collaborated_with`, `applied_for`, `partners_with`
## Usage Instructions
### Adding Data via Interview
1. Activate the `interview-collect` skill
2. Specify a topic area (e.g., "my role at DB Cargo" or "my Python skills")
3. Answer the focused questions (max 10 per session)
4. Review the collected data when presented
5. Resolve any conflicts with existing data if flagged
### Generating a CV
1. Activate the `cv-generate` skill
2. Provide the job posting (paste text or reference a file in `sources/`)
3. Specify whether this is an individual or tandem application
4. Review the generated CV in `output/cvs/`
5. For tandem applications, you'll get 3 documents: combined tandem CV + 2 individual CVs
### Generating a Speaker Introduction
1. Activate the `talk-intro` skill
2. Provide the talk topic and event context (technical, business, or academic)
3. Review the three length variants in `output/intros/`
### Running a Knowledge Base Review
1. Activate the `kb-review` skill
2. Review the completeness scores and staleness report
3. Follow up on suggested areas using the `interview-collect` skill
### Manual Editing
Entity files are plain YAML — you can edit them directly with any text editor. After manual edits, the graph index should be rebuilt to stay consistent.
### File Naming Convention
All entity files use kebab-case naming: `<entity-id>.yaml`
Examples: `andre-knie.yaml`, `db-cargo-innovation-lead.yaml`, `aws-solutions-architect.yaml`
## Version Control
Git tracks all changes to the knowledge base. Every entity modification creates a meaningful diff thanks to the YAML format and one-file-per-entity pattern.
- Commit after interview sessions to capture new data
- Commit after CV generation to track output history
- Use branches for experimental changes to profiles
## Technical Details
- **Data format:** YAML (human-readable, clean diffs, supports comments)
- **Validation:** TypeScript in `src/` — schema validation, temporal consistency checks
- **Testing:** Vitest + fast-check (property-based testing)
- **No build step required** — the file system is the database
- **No server required** — Kiro skills read/write files directly