From nas-hr-skills
Full context loader for the NAS HRMS system — Performance module, KPI Plans, Payroll, and all related Angular modules. Loads what's built, what's designed, the planned scope, and session state so any NAS HR work can resume without re-explaining context.
How this skill is triggered — by the user, by Claude, or both
Slash command
/nas-hr-skills:nas-hrThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
When this skill is invoked, do the following **in order** without asking the user anything first:
When this skill is invoked, do the following in order without asking the user anything first:
Angular 17 HRMS (NAS design system, PrimeNG, color #0c2427). Production app. Mobile app is native (not Flutter).
Project path: /Users/krim/Downloads/HR-front-end-Development 2/src/app/newTheme/features/
manage-performance/) — 19 components| What | Detail |
|---|---|
| Question Sets | Reusable sets of typed questions: Rating, Yes/No, Short Answer, Multiple Choice |
| Templates | Wire question sets into a named template |
| Run Appraisal | HR assigns template to departments → manager rates employees on mobile → employee accepts or rejects |
| Flow type | Manager-review only (not self or peer yet) |
| Routing | Appraisals → Details → Department → Employee Questions/Scoring |
Key models: models/appraisals.interface.ts, models/question.model.ts
Key services: services/performance.service.ts, services/appraisal-template.service.ts, services/question-set.service.ts
manage-kpi-plans/) — 8 components| What | Detail |
|---|---|
| OKR Library | High-level objectives: Business Sustainability, Growth, etc. |
| KPI Library | Name, unit, type (Quantitative or Qualitative) |
| KPI Plans | Wire OKRs → assign KPIs to OKRs → set weight, cap, gate per KPI item |
| KPI Assignments | Assign plan to employees — includes bonusAmount field |
| Achievement Entry | Record achieved values per review period |
| Analytics screen | Exists — details TBD |
Key models: models/kpi-plan.interface.ts, models/kpi-definition.interface.ts
Key services: services/kpi-plan.service.ts, services/kpi-assignment.service.ts, services/kpi-achievement.service.ts
Important:
bonusAmountonKpiAssignmentis intentionally separate from the Rewards module. KPI payouts and Rewards bonuses are independent systems — do not merge them.
| Tier | Type | Who | Flow |
|---|---|---|---|
| Tier 2 | Manager bonus / award | Manager → Employee | Manager sends from mobile directly |
| Tier 3 | Monetary award with approval | Manager nominates → HR approves | Mobile nomination → dashboard approval → payroll line item |
This is the only remaining gap in the Rewards cycle. Tiers 2 & 3 are built. Tier 1 closes the full recognition loop by enabling any employee to recognize any colleague — not just top-down.
Peer-to-peer works on an endorsement threshold — not a simple one-tap badge send.
| Role | Can see progress counter (X/50)? |
|---|---|
| The employee themselves | ✅ Own profile only |
| Their direct manager | ✅ Team view (supervisory access) |
| HR | ✅ Dashboard (admin access) |
| Any other colleague / peer | ❌ Never |
The progress counter is never shown in the social feed. The feed shows individual endorsement actions only.
Every endorsement received counts toward the Recognition Score — not just earned badges. Earning a badge is a social achievement (profile pin, wall post, notification) separate from scoring.
1 endorsement received = 1 point (simple, no multipliers)
Example:
50 endorsements for Team Player = 50 pts
30 endorsements for Super Growth = 30 pts
Total points = 80 pts
Recognition Score = (total points / maxRecognitionPoints) × 10%
e.g. (80 / 500) × 10% = 1.6% of overall score
Overall Performance Score (HR sets weights):
Appraisal Score 50%
KPI Achievement 40%
Recognition Score 10% ← peer-to-peer feeds here
Key rules:
maxRecognitionPoints is configured by HR in RecognitionSettingsEntity 1: BadgeType
| Field | Type | Notes |
|---|---|---|
name | text | e.g., "Team Player" |
nameAr | text | Arabic name |
description | text | What this badge means |
icon | image upload | Badge icon |
weight | number (1–10) | Points value — feeds recognition score |
endorsementThreshold | number | HR sets per badge — how many endorsements are needed to officially earn it (no system default) |
isActive | boolean | Active / archived |
Entity 2: RecognitionSettings (one global record)
| Field | Type | Notes |
|---|---|---|
minDepartmentsRequired | number | HR sets — minimum departments that must contribute endorsements to earn a badge |
monthlyEndorsementLimit | number | HR sets — maximum endorsements an employee can send per calendar month |
maxRecognitionPoints | number | HR sets — points ceiling for full 10% score. Formula: (total pts / max pts) × 10% |
earnedBadgeWeightInScore | number % | Default 10% of overall performance |
announceOnEarn | boolean | Company-wide post on badge earn |
featureEnabled | boolean | On/Off switch |
Recognition Wall moderation inputs:
HR does NOT manually grant badges — pure peer-to-peer only, no bypassing the threshold.
Send Endorsement (only form the manager fills):
| Field | Type | Notes |
|---|---|---|
recipientEmployeeId | select / search | Any employee in the company |
badgeTypeId | select | From HR's active badge catalog |
message | text (optional) | Max 200 chars |
System auto-fills: senderId, senderDepartmentId, createdAt
Team view (read + filter only):
Send Endorsement (identical fields to manager):
| Field | Type | Notes |
|---|---|---|
recipientEmployeeId | select / search | Any colleague (any dept) |
badgeTypeId | select | From HR's active badge catalog |
message | text (optional) | Max 200 chars |
Own profile (read-only, private):
Recognition Feed (read-only):
| Entity | HR | Manager | Employee |
|---|---|---|---|
BadgeType | ✅ Creates & manages | ❌ | ❌ |
RecognitionSettings | ✅ Configures | ❌ | ❌ |
Endorsement | ✅ Reads all | ✅ Sends + reads team | ✅ Sends + reads own |
X/50 progress | ✅ Sees all | ✅ Direct reports only | ✅ Own only |
| Recognition Wall | ✅ Reads + moderates | ✅ Reads | ✅ Reads |
| Analytics | ✅ Full company | ✅ Team only | ❌ |
Not a new module — an upgrade to the existing appraisal template system. Backwards compatible: if only Manager rater type is checked, it behaves exactly like the current appraisal.
| New Field | Type | Notes |
|---|---|---|
raterTypes | checkboxes | Manager / Self / Peer / Upward |
maxPeerNominations | number | Max peers employee can suggest (default 3) |
peerSelectionDeadlineDays | number | Days after launch for peer selection |
Each question gets a visibilityType enum:
| Value | Meaning |
|---|---|
both_sides | Reviewer AND employee both answer this question |
reviewee_only_visible | Employee answers — reviewer can see the answer |
reviewee_only_hidden | Employee answers — reviewer cannot see the answer |
reviewer_only_visible | Reviewer answers — employee can see the answer |
reviewer_only_hidden | Reviewer answers — employee cannot see the answer |
Reference: Teamflect question-set model (confirmed by user as the right approach).
| New Field | Type | Notes |
|---|---|---|
peerSelectionDeadline | date | Deadline for peer nominations |
submissionDeadline | date | Deadline for all reviewers to submit |
managerScoreWeight | number % | e.g., 50% |
selfScoreWeight | number % | e.g., 20% |
peerScoreWeight | number % | e.g., 30% |
| Upward score | — | Informational only — not included in employee's final score |
Draft → Active → Peer Selection → Collection → Calibration → Closed
maxPeerNominations colleagues (any dept)| Data | Employee | Manager | HR |
|---|---|---|---|
| Own self-assessment | ✅ | ✅ | ✅ |
| Manager score | ✅ (after closed) | ✅ | ✅ |
| Peer scores — aggregated | ✅ no names | ✅ with names | ✅ |
| Individual peer responses | ❌ | ✅ | ✅ |
| Upward scores (employee rates manager) | ❌ | ❌ aggregated only | ✅ |
| Final weighted score | ✅ | ✅ | ✅ |
HR (Dashboard): Template rater types + question visibilityType + appraisal run weights + deadlines + completion monitoring Manager (Mobile): Rate employees (existing) + approve peer list + calibration notes + optional score override Employee (Mobile): Self-assessment form + nominate peers + fill peer feedback form (when nominated) + upward review (if enabled)
| Action | HR | Manager | Employee |
|---|---|---|---|
| Create template + enable rater types | ✅ | ❌ | ❌ |
| Set score weights | ✅ | ❌ | ❌ |
| Rate employee | ❌ | ✅ | ❌ |
| Self-assessment | ❌ | ❌ | ✅ |
| Nominate peers (suggests) | ❌ | ❌ | ✅ |
| Approve peer list | ❌ | ✅ | ❌ |
| Fill peer feedback | ❌ | ❌ | ✅ (when nominated) |
| Upward review | ❌ | ❌ | ✅ (if template enables it) |
| Calibration + publish | ❌ | ✅ | ❌ |
| See final results | ✅ Full | ✅ Team | ✅ Own only |
| Priority | Module | Status | Notes |
|---|---|---|---|
| 🔴 Phase 1 | Rewards — Peer-to-Peer Badges | ✅ Designed, ready to build | See full design above |
| 🔴 Phase 1 | 360-Degree Feedback | ✅ Designed, ready to build | See full design above |
| ⏸ Deferred | Calibration | 📋 Next phase | Needs 360 data flowing first |
| ⏸ Deferred | Performance Improvement Plan (PIP) | 📋 Next phase | Needs calibration data |
| ⏸ Future | Succession Planning | 📋 Future | Needs all modules running |
| ⏸ Future | Competency Framework | 📋 Future | Needs all modules running |
| From | To | What flows |
|---|---|---|
| Peer-to-Peer Badges | Performance Score | Earned badge weight → Recognition Score (10% of overall) |
| KPI Achievement | Performance Score | KPI score → 40% of overall |
| Appraisal / 360 | Performance Score | Appraisal score → 50% of overall |
| Performance Score | Calibration | Feeds Performance axis of 9-box grid |
| Calibration | Succession Planning | Star Performer + High Potential → talent pool |
| Performance Score (low) | PIP Trigger | Below threshold → PIP can be created |
| Rewards Tier 3 (monetary) | payroll-v3 | Approved bonus → additional salary line item |
| Element | Content |
|---|---|
| Top row | ★ Earned pill (green) + timestamp |
| Content | Badge icon + employee photo + name (truncated with ...) |
| Sub-line | Badge name (teal/brand color) |
| Stats | "X endorsements · Y departments" |
| Quote | Auto-generated text based on endorsement data |
| Bottom row | "Details →" link + reaction counts (🚀 🔥 ❤️) + ··· menu |
| ··· menu | Employee: Report only · HR: Pin / Hide / Flag |
⏸ Not yet designed — "Yusuf endorsed Ahmed for Team Player" simplified format
⏸ Not yet designed — will show: earned badges + in-progress X/50 bars + dept breakdown + monthly send limit
| Step | Title | Key Content |
|---|---|---|
| 1 | "Who do you want to recognize?" | Employee dropdown (single select) → selected peer card: photo + name + dept + title (no employee ID) · Next disabled until selected |
| 2 | "Choose a Badge" | Badge list: icon + name + description + points pill + radio select · Search field at top · Next |
| 3 | "Add a Comment" | Summary card: badge icon + "You are endorsing" + employee name + badge name · Optional comment field ("Why do they deserve this badge?") · Submit endorsement |
All steps: Step indicator ● ● ○, back arrow on steps 2 & 3, X closes entire sheet
Phase 1: Single employee only — no multi-select
Self-endorsement: Employee excluded from the list entirely (not shown, not greyed)
docs/superpowers/specs/2026-05-17-performance-module-full-scope.htmlhttps://www.figma.com/design/Zf77LBcrb9Bt61ICdjUZGN/NAS-HR-Dashboard → 🥅 Performance page~/.claude/projects/-Users-krim/memory/project_hr_performance_module.md~/.claude/projects/-Users-krim/memory/project_hr_kpi_plans.md~/.claude/projects/-Users-krim/memory/project_hr_payroll_v3.mdPrint this section exactly as-is. No commands to run.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
NAS HR — Current Implementation State
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
BUILT ✅
Angular Dashboard
├── manage-performance/ → Appraisal (19 components)
├── manage-kpi-plans/ → KPI Plans (8 components)
└── payroll-v3/ → Payroll engine
Rewards
├── Tier 2 — Manager bonus ✅ built
└── Tier 3 — Monetary + approval ✅ built
DESIGNED — READY TO BUILD 🔴
Rewards Tier 1 — Peer-to-Peer Badges
└── Angular Dashboard
├── Badge Types management (list + create/edit modal)
├── Recognition Settings (global config)
├── Recognition Wall moderation (HR view)
└── Analytics
360-Degree Feedback
└── Angular Dashboard
├── Template upgrades (rater types + question visibilityType)
├── Appraisal Run upgrades (weights + deadlines)
└── Collection monitoring screen
MOBILE SCREENS (Native app — design in Figma)
Peer-to-Peer Badges
├── Recognition Wall ✅ designed (node 5061-30534)
│ ├── Tab 1: All Peer Recognitions (feed)
│ └── Tab 2: My Details (personal stats)
├── Send Endorsement — 3-step bottom sheet ✅ designed
├── Regular endorsement post card ⏸ not yet designed
├── My Details tab ⏸ not yet designed
└── Empty states ⏸ not yet designed
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
WHAT TO BUILD NEXT (Phase 1 priority order)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Angular: manage-recognition/ module
Follow manage-kpi-plans/ pattern exactly:
models/ → services/ → components/ → popups/
Start with:
models/badge-type.interface.ts
models/recognition-settings.interface.ts
models/endorsement.interface.ts
services/badge-type.service.ts
services/recognition.service.ts
components/badge-catalog/ (list + create/edit)
components/recognition-settings/
components/recognition-wall/ (HR moderation view)
2. Angular: 360-Degree Feedback upgrades
Modify existing manage-performance/ — do NOT create new module
Touch: appraisal-template + question-set + appraisal-run components
3. Mobile Figma: remaining peer-to-peer screens
Regular endorsement post card → My Details tab → Empty states
Figma file: https://www.figma.com/design/Zf77LBcrb9Bt61ICdjUZGN/NAS-HR-Dashboard
Page: 🥅 Performance
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
KEY PATTERNS TO FOLLOW
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Angular module structure → copy manage-kpi-plans/
Design system → NAS design system, PrimeNG, color #0c2427
List views → PrimeNG p-table, lazy load, filter toolbar
Modals/popups → popups/ subfolder, DynamicDialog
Services → HttpClient + localStorage fallback (POC mode)
Models → interfaces only, no classes
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Say exactly:
NAS HR ready. Phase 1 scope is locked: Peer-to-Peer Badges + 360-Degree Feedback. Full data models, design decisions, and mobile screens are in the briefing above. Jump straight to implementation — what are you working on?
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub karimeltalawyy/nas-hr-skills --plugin nas-hr-skills