You plan is a very ambitious one, but I really like the concept. I think I prefer Skyrim's over-simplified approach to disposition. Although it reduced relationships in the game to a handful of conditions beginning usually with indifference and ranging from despise to complete trust, it was the player's actions (mostly through quests) that the disposition would be altered - well effectively through dialogue as you propose.
You can still make it so speechcraft still has a roll since dialogue entries can be filtered by the player's skill. You can also modify the player's speechcraft through dialogue results. It is possible to modify a skill by fractional amounts. So you could add something like player->ModSpeechcraft 0.05 to dialogue results for the appropriate response.
Except for skillbooks and temporary adjustments through the barter process the only way I notice that speechcraft is adjusted is through the successful use of the persuasion tab (admire, bribe, etc.). There are no guidelines for how 'normal' NPC interactions should affect this skill. You are going to have to experiment with the results.
To expand your concept to work with all NPCs you are going to have to adjust your approach otherwise it will be overwhelming. Even following a scheme as I propose it will still be a great undertaking and ultimately still may be too easy for the player to exploit.
I suggest creating new topics of conversation through which NPC disposition and player speechcraft will be modified. The topic should be one that is important enough to the NPC to justify it influencing their feelings toward the player. One way to control this would be to create different topics filtered for difference classes (or races, factions, etc. - whatever you feel would create strong feelings in the NPC). There will need to be different dialogue threads under each such topic that depend on the NPC's disposition toward the player (not unlike what is done under the persuasion tab except these will be more complicated each with multiple choices that ultimately determine how disposition and speechcraft are affected. The player may have to carry on a 'long conversation' within that topic before the results are achieved. There still exists the possibility that the player offer money (bribe) or flattery (admire) or threaten (intimidate) as well as the completion of a modest 'quest'. Of course, you will determine the impact each such 'action' will have on the NPC's disposition. Completing a quest may be greater than simple flattery.
It would be nice if the player could be prevented to drawing from this particular well repeatedly (at least in the same session), but that may prove difficult to control precisely. Perhaps a global variable flag that is set the first time the player speaks on the topic that is not reset until the player leaves dialogue. The flag is a filter that prevents the player from speaking (at least to any purpose) on the topic during that session. Since there are external factors that affect disposition you could filter it so the responses filtered by disposition are so spread out that the results that improve disposition will not change it enough for the player to reach the next tier. The modification of disposition can be made conditional - if it is already exceeds a certain value then no further improvement is allowed except if the player 'jumps' to the next level by some other means (charm, faction reputation, reputation(?)). The structure might look like this:
Topic: making ends meet
Filtered for Class: commoner
Filter [Global: DiscussedOnce == 1]: Blah, blah, blah...
Results: (none)
Filter [Disposition: 90]: Blah, blah, blah...
Result: Set DiscussedOnce to 1
Choice "(Player response 1)" 1 "(Player response 2)" 2 "(Player response 3)" 3
Filter [Disposition: 90; Function: Choice = 1]: Blah, blah, blah...
Result: ModDisposition 5
StartScript "ModifySpeechcraft"
Filter [Disposition: 90; Function: Choice = 2]: Blah, blah, blah...
Results: (none)
Filter [Disposition: 90; Function: Choice = 3]: Blah, blah, blah...
Result: ModDisposition -5
Filter [Disposition: 70]:
Filter [Disposition: 50]:
Filter [Disposition: 30]:
Filter [Disposition: 10]:
Of course I am showing just a basic structure. Most interactions will require more than a simple statement and response. The global script ModifySpeechcraft is a variation on my original suggestion that should be more efficient. You can scale the amount of 'experience' gained based on the player's current speechcraft (as Bethesda does with all skills). Also it is much easier to make adjustments to the script than to go through every dialogue entry to make any necessary change. You can also launch the script even if the player is 'unsuccessful' if you believe we learn from our mistakes, and/or have different versions of the script depending on failure or the degree of reliance on the speechcraft skill to succeed. The script might look something like this:
Begin ModifySpeechcraft_Success
short doOnce
if ( doOnce == 1)
set doOnce to 0 ; reset for next time script is started
StopScript "ModifySpeechcraft_Success"
return
endif
if ( (player->GetSpeechcraft ) >= 90 )
player->ModSpeechcraft 0.01
elseif ( (player->GetSpeechcraft ) >= 80 )
player->ModSpeechcraft 0.02
elseif ( (player->GetSpeechcraft ) >= 70 )
player->ModSpeechcraft 0.03
elseif
endif
set doOnce to 1
End
Oops. There is one serious downside to manipulating a skill via script, any improvement in the skill will not count toward leveling - if speechcraft is a major or minor skill increases in this way will not move the player closer to leveling. I am uncertain how this affects the attribute multiplies upon level up. This may not be an issue with leveling mods like Galsiah's Character Development.
Edit: Perhaps that is what Greatness alludes. It would be nice if the script extender will resolve the problem with awarding 'experience' for the purposes of leveling.
Edit: Meaning-altering typo.